capacitor-native-google-one-tap-signin 7.0.3 → 7.0.4
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/CapacitorNativeGoogleOneTapSignin.podspec +1 -1
- package/README.md +1 -1
- package/android/googleauth-plugin/build.gradle +17 -18
- package/dist/esm/web/FedCMAuthClient.js +10 -1
- package/dist/esm/web/FedCMAuthClient.js.map +1 -1
- package/dist/plugin.cjs.js +10 -1
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +10 -1
- package/dist/plugin.js.map +1 -1
- package/package.json +16 -16
package/README.md
CHANGED
|
@@ -121,7 +121,7 @@ console.log(signInResultOption);
|
|
|
121
121
|
```
|
|
122
122
|
|
|
123
123
|
# Run the demo app
|
|
124
|
-
|
|
124
|
+
The `demo/react` folder contains a demo app for web, Android and iOS. See [demo/react/README.md](demo/react/README.md) for how to build and run it.
|
|
125
125
|
|
|
126
126
|
# Notes about testing with an emulator
|
|
127
127
|
|
|
@@ -5,7 +5,7 @@ plugins {
|
|
|
5
5
|
|
|
6
6
|
android {
|
|
7
7
|
namespace 'com.proventask.capacitor.googleauth'
|
|
8
|
-
compileSdk
|
|
8
|
+
compileSdk 36
|
|
9
9
|
|
|
10
10
|
defaultConfig {
|
|
11
11
|
minSdk 24
|
|
@@ -31,29 +31,28 @@ android {
|
|
|
31
31
|
dependencies {
|
|
32
32
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
33
33
|
implementation project(':capacitor-android')
|
|
34
|
-
|
|
35
|
-
implementation 'androidx.
|
|
36
|
-
implementation 'androidx.
|
|
37
|
-
implementation 'androidx.core:core-ktx:1.13.1'
|
|
34
|
+
// Same versions as Capacitor 7 uses.
|
|
35
|
+
implementation 'androidx.appcompat:appcompat:1.7.0'
|
|
36
|
+
implementation 'androidx.core:core-ktx:1.15.0'
|
|
38
37
|
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.25'
|
|
39
38
|
testImplementation 'junit:junit:4.13.2'
|
|
40
|
-
testImplementation 'org.mockito:mockito-android:5.
|
|
39
|
+
testImplementation 'org.mockito:mockito-android:5.24.0'
|
|
41
40
|
testImplementation 'org.mockito.kotlin:mockito-kotlin:5.4.0'
|
|
42
41
|
testImplementation 'org.mockito:mockito-inline:5.2.0'
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
androidTestImplementation 'androidx.test.
|
|
46
|
-
androidTestImplementation '
|
|
42
|
+
// 1.8.x is the last version that supports Kotlin 1.9.
|
|
43
|
+
testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1'
|
|
44
|
+
androidTestImplementation 'androidx.test.ext:junit:1.3.0'
|
|
45
|
+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.7.0'
|
|
46
|
+
androidTestImplementation 'org.mockito:mockito-android:5.24.0'
|
|
47
47
|
androidTestImplementation 'org.mockito.kotlin:mockito-kotlin:5.4.0'
|
|
48
|
-
androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.
|
|
49
|
-
|
|
50
|
-
implementation 'com.google.android.gms:play-services-
|
|
51
|
-
|
|
52
|
-
implementation 'androidx.credentials:credentials:1.
|
|
53
|
-
implementation 'com.google.android.libraries.identity.googleid:googleid:1.1.
|
|
48
|
+
androidTestImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1'
|
|
49
|
+
// For GoogleApiAvailability.
|
|
50
|
+
implementation 'com.google.android.gms:play-services-base:18.11.1'
|
|
51
|
+
// credentials 1.6+ and googleid 1.2+ are compiled with Kotlin 2.1 and need Kotlin 2. Capacitor 7 uses Kotlin 1.9.
|
|
52
|
+
implementation 'androidx.credentials:credentials:1.5.0'
|
|
53
|
+
implementation 'com.google.android.libraries.identity.googleid:googleid:1.1.1'
|
|
54
54
|
|
|
55
55
|
// optional - needed for credentials support from play services, for devices running
|
|
56
56
|
// Android 13 and below.
|
|
57
|
-
implementation 'androidx.credentials:credentials-play-services-auth:1.
|
|
58
|
-
implementation 'org.json:json:20220924'
|
|
57
|
+
implementation 'androidx.credentials:credentials-play-services-auth:1.5.0'
|
|
59
58
|
}
|
|
@@ -19,7 +19,16 @@ export async function signIn(autoSelect, clientId, nonce) {
|
|
|
19
19
|
configURL: 'https://accounts.google.com/gsi/fedcm.json',
|
|
20
20
|
clientId: clientId,
|
|
21
21
|
// loginHint: ''
|
|
22
|
-
nonce: nonce
|
|
22
|
+
nonce: nonce,
|
|
23
|
+
fields: ['name', 'email', 'picture'],
|
|
24
|
+
// Google builds the continuation popup URL from these params. Without them, the popup fails with
|
|
25
|
+
// "Required parameter is missing: response_type". Same values as the google gsi/client library sends.
|
|
26
|
+
params: {
|
|
27
|
+
response_type: 'id_token',
|
|
28
|
+
scope: 'email profile openid',
|
|
29
|
+
ss_domain: location.origin,
|
|
30
|
+
nonce: nonce !== null && nonce !== void 0 ? nonce : 'not_provided'
|
|
31
|
+
}
|
|
23
32
|
}
|
|
24
33
|
]
|
|
25
34
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FedCMAuthClient.js","sourceRoot":"","sources":["../../../src/web/FedCMAuthClient.ts"],"names":[],"mappings":"AAAA,uKAAuK;AAOvK,IAAI,oBAAoB,GAAgC,SAAS,CAAC;AAClE,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEhD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,OAAM,CAAC,MAAM,CAAC,KAAK,WAAW,IAAI,oBAAoB,IAAI,MAAM,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAAmB,EAAE,QAAgB,EAAE,KAAc;;IAChF,IAAI,CAAC;QACH,sEAAsE;QACtE,oBAAoB,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,+DAA+D;QAC/D,4EAA4E;QAC5E,MAAM,kBAAkB,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC;YACzD,QAAQ,EAAE;gBACR,OAAO,EAAE,QAAQ;gBACjB,SAAS,EAAE;oBACT;wBACE,SAAS,EAAE,4CAA4C;wBACvD,QAAQ,EAAE,QAAQ;wBAClB,gBAAgB;wBAChB,KAAK,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"FedCMAuthClient.js","sourceRoot":"","sources":["../../../src/web/FedCMAuthClient.ts"],"names":[],"mappings":"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","sourcesContent":["// The Federated Credential Management (FedCM) browser API is a new privacy-preserving alternative to third-party cookies for federated identity providers like google.\n\nimport type { DisconnectResult, NoSuccessSignInResult, SignOutResult } from \"../definitions\";\nimport type { NotEnrichedSuccessSignInResult } from \"../definitionsInternal\";\n\ntype IdentityCredential = Credential & { isAutoSelected: boolean, token: string };\n\nlet fedCMAbortController: AbortController | undefined = undefined;\nconst cancelCalledAbortReason = 'CANCEL_CALLED';\n\nexport function isFedCMSupported(): boolean {\n return typeof(window) !== 'undefined' && 'IdentityCredential' in window;\n}\n\nexport async function signIn(autoSelect: boolean, clientId: string, nonce?: string): Promise<NotEnrichedSuccessSignInResult | NoSuccessSignInResult> {\n try {\n // console.log(`IdentityCredential supported: ${isFedCMSupported()}`);\n fedCMAbortController = new AbortController();\n // see https://developers.google.com/privacy-sandbox/3pcd/fedcm\n // see https://developers.google.com/privacy-sandbox/blog/fedcm-auto-reauthn\n const identityCredential = await navigator.credentials.get({\n identity: {\n context: 'signin',\n providers: [\n {\n configURL: 'https://accounts.google.com/gsi/fedcm.json',\n clientId: clientId,\n // loginHint: ''\n nonce: nonce,\n fields: ['name', 'email', 'picture'],\n // Google builds the continuation popup URL from these params. Without them, the popup fails with\n // \"Required parameter is missing: response_type\". Same values as the google gsi/client library sends.\n params: {\n response_type: 'id_token',\n scope: 'email profile openid',\n ss_domain: location.origin,\n nonce: nonce ?? 'not_provided'\n }\n }\n ]\n },\n mediation: autoSelect ? 'optional' : 'required' as 'optional' | 'required' | 'silent',\n signal: fedCMAbortController.signal\n } as any) as IdentityCredential;\n\n if (!identityCredential?.token) {\n return {};\n }\n\n return {\n idToken: identityCredential.token,\n isAutoSelected: identityCredential.isAutoSelected\n };\n } catch (e) {\n // NotSupportedError DOMException\n // IdentityCredentialError DOMException\n // NetworkError DOMException --> name: 'NetworkError'\n // NotAllowedError DOMException\n const name = (e as Error).name ?? '';\n const message = (e as Error).message ?? '';\n // console.log('fedCMSignIn error: ', e, name);\n\n if (message.includes(cancelCalledAbortReason)\n || (name === 'NetworkError' && message.includes('Error retrieving a token.'))) {\n return {\n noSuccessReasonCode: 'SIGN_IN_CANCELLED'\n };\n }\n\n return {};\n } finally {\n fedCMAbortController = undefined;\n }\n}\n\nexport function signOut(_authenticatedUserId: string | undefined): Promise<SignOutResult> {\n navigator.credentials.preventSilentAccess();\n return Promise.resolve({ isSuccess: true });\n}\n\nexport function disconnect(_authenticatedUserId: string | undefined): Promise<DisconnectResult> {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\n\nexport function cancel(): void {\n fedCMAbortController?.abort({ message: cancelCalledAbortReason });\n}\n"]}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -135,7 +135,16 @@ async function signIn$1(autoSelect, clientId, nonce) {
|
|
|
135
135
|
configURL: 'https://accounts.google.com/gsi/fedcm.json',
|
|
136
136
|
clientId: clientId,
|
|
137
137
|
// loginHint: ''
|
|
138
|
-
nonce: nonce
|
|
138
|
+
nonce: nonce,
|
|
139
|
+
fields: ['name', 'email', 'picture'],
|
|
140
|
+
// Google builds the continuation popup URL from these params. Without them, the popup fails with
|
|
141
|
+
// "Required parameter is missing: response_type". Same values as the google gsi/client library sends.
|
|
142
|
+
params: {
|
|
143
|
+
response_type: 'id_token',
|
|
144
|
+
scope: 'email profile openid',
|
|
145
|
+
ss_domain: location.origin,
|
|
146
|
+
nonce: nonce !== null && nonce !== void 0 ? nonce : 'not_provided'
|
|
147
|
+
}
|
|
139
148
|
}
|
|
140
149
|
]
|
|
141
150
|
},
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/SignInButtonElement.js","esm/helpers.js","esm/web/FedCMAuthClient.js","esm/web/GoogleIdentityServicesClient.js","esm/web/GoogleSignInWeb.js","esm/GoogleSignIn.js"],"sourcesContent":["export function createSignInButtonElement(gsiButtonConfiguration) {\n var _a;\n const localizedStrings = {\n en: { signin: 'Sign in', continue_with: 'Continue with Google', signin_with: 'Sign in with Google', signup_with: 'Sign up with Google' },\n ar: { signin: '\\u062a\\u0633\\u062c\\u064a\\u0644 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644', continue_with: '\\u0627\\u0644\\u0645\\u0648\\u0627\\u0635\\u0644\\u0629 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Google', signin_with: '\\u062a\\u0633\\u062c\\u064a\\u0644 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Google', signup_with: '\\u0627\\u0644\\u0627\\u0634\\u062a\\u0631\\u0627\\u0643 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 Google' },\n sr: { signin: '\\u041f\\u0440\\u0438\\u0458\\u0430\\u0432\\u0438 \\u043c\\u0435', continue_with: '\\u041d\\u0430\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0435 \\u0441\\u0430 Google-\\u043e\\u043c', signin_with: '\\u041f\\u0440\\u0438\\u0458\\u0430\\u0432\\u0438\\u0442\\u0435 \\u0441\\u0435 \\u043f\\u043e\\u043c\\u043e\\u045b\\u0443 Google-\\u0430', signup_with: '\\u0420\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0443\\u0458\\u0442\\u0435 \\u0441\\u0435 \\u043f\\u043e\\u043c\\u043e\\u045b\\u0443 Google-\\u0430' },\n nb: { signin: 'Logg p\\u00e5', continue_with: 'Fortsett med Google', signin_with: 'Logg p\\u00e5 med Google', signup_with: 'Registrer deg med Google' },\n pl: { signin: 'Zaloguj si\\u0119', continue_with: 'Kontynuuj przy u\\u017cyciu konta Google', signin_with: 'Zaloguj si\\u0119 przez Google', signup_with: 'Zarejestruj si\\u0119 przez Google' },\n vi: { signin: '\\u0110\\u0103ng nh\\u1eadp', continue_with: 'Ti\\u1ebfp t\\u1ee5c truy c\\u1eadp Google', signin_with: '\\u0110\\u0103ng nh\\u00e2\\u0323p b\\u0103\\u0300ng Google', signup_with: '\\u0110\\u0103ng k\\u00fd b\\u1eb1ng Google' },\n cs: { signin: 'P\\u0159ihl\\u00e1sit se', continue_with: 'Pokra\\u010dovat pomoc\\u00ed Googlu', signin_with: \"P\\u0159ihl\\u00e1sit se p\\u0159es Google\", signup_with: 'Registrace pomoc\\u00ed Googlu' },\n id: { signin: 'Login', continue_with: 'Lanjutkan dengan Google', signin_with: 'Login dengan Google', signup_with: 'Daftar dengan Google' },\n nl: { signin: 'Inloggen', continue_with: 'Doorgaan met Google', signin_with: 'Inloggen met Google', signup_with: 'Aanmelden bij Google' },\n gl: { signin: 'Iniciar sesi\\u00f3n', continue_with: 'Continuar con Google', signin_with: 'Iniciar sesi\\u00f3n con Google', signup_with: 'Iniciar sesi\\u00f3n con Google' },\n sv: { signin: 'Logga in', continue_with: 'Forts\\u00e4tt med Google', signin_with: 'Logga in med Google', signup_with: 'Registrera dig med Google' },\n lv: { signin: 'Pierakst\\u012b\\u0161an\\u0101s', continue_with: 'Turpin\\u0101t darbu ar Google', signin_with: 'Pierakstieties ar Google', signup_with: 'Re\\u0123istr\\u0113\\u0161an\\u0101s, izmantojot Google' },\n tr: { signin: 'Oturum a\\u00e7\\u0131n', continue_with: 'Google ile devam edin', signin_with: 'Google ile oturum a\\u00e7\\u0131n', signup_with: 'Google ile kaydolun' },\n it: { signin: 'Accedi', continue_with: 'Continua con Google', signin_with: 'Accedi con Google', signup_with: 'Registrati con Google' },\n sq: { signin: 'Identifikohu', continue_with: 'Vazhdo me Google', signin_with: 'Identifikohu me Google', signup_with: 'Regjistrohu me Google' },\n ro: { signin: 'Conecteaz\\u0103-te', continue_with: 'Continu\\u0103 cu Google', signin_with: 'Conecteaz\\u0103-te cu Google', signup_with: '\\u00censcrie-te cu Google' },\n de: { signin: 'Anmelden', continue_with: 'Weiter mit Google', signin_with: '\\u00dcber Google anmelden', signup_with: 'Mit Google anmelden' },\n ko: { signin: '\\ub85c\\uadf8\\uc778', continue_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\uacc4\\uc18d\\ud558\\uae30', signin_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\ub85c\\uadf8\\uc778', signup_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\uac00\\uc785\\ud558\\uae30' },\n fr: { signin: 'Se connecter', continue_with: 'Continuer avec Google', signin_with: 'Se connecter avec Google', signup_with: \"S'inscrire avec Google\" },\n kmr: { signin: 'Oturum a\\u00e7\\u0131n', continue_with: 'Google ile devam edin', signin_with: 'Google ile oturum a\\u00e7\\u0131n', signup_with: 'Google ile kaydolun' },\n zh: { signin: '\\u767b\\u5f55', continue_with: '\\u901a\\u8fc7 Google \\u7ee7\\u7eed\\u64cd\\u4f5c', signin_with: \"\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u767b\\u5f55\", signup_with: '\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u6ce8\\u518c' },\n 'zh-CN': { signin: '\\u767b\\u5f55', continue_with: '\\u901a\\u8fc7 Google \\u7ee7\\u7eed\\u64cd\\u4f5c', signin_with: \"\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u767b\\u5f55\", signup_with: '\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u6ce8\\u518c' },\n 'zh-HK': { signin: '\\u767b\\u5165', continue_with: '\\u7e7c\\u7e8c\\u900f\\u904e Google \\u5e33\\u6236\\u64cd\\u4f5c', signin_with: '\\u4f7f\\u7528 Google \\u5e33\\u6236\\u767b\\u5165', signup_with: '\\u4f7f\\u7528 Google \\u5e33\\u6236\\u8a3b\\u518a' },\n pt: { signin: 'Fazer login', continue_with: 'Continuar com o Google', signin_with: 'Fazer login com o Google', signup_with: 'Inscrever-se no Google' },\n es: { signin: 'Iniciar sesi\\u00f3n', continue_with: 'Continuar con Google', signin_with: 'Iniciar sesi\\u00f3n con Google', signup_with: 'Registrarse con Google' },\n };\n const locale = gsiButtonConfiguration === null || gsiButtonConfiguration === void 0 ? void 0 : gsiButtonConfiguration.locale;\n let localeTexts = locale && localizedStrings[locale];\n if (!localeTexts && locale) {\n const [language] = locale.split('-');\n localeTexts = localizedStrings[language] || localizedStrings['en'];\n }\n else if (!localeTexts) {\n localeTexts = localizedStrings['en'];\n }\n const text = (_a = gsiButtonConfiguration === null || gsiButtonConfiguration === void 0 ? void 0 : gsiButtonConfiguration.text) !== null && _a !== void 0 ? _a : 'signin_with';\n const buttonText = localeTexts[text];\n // HTML from https://github.com/inouiw/ReactSignInWithGoogleButton\n const button = document.createElement('button');\n button.setAttribute(\"style\", \"border-radius: 4px; background-color: rgb(255, 255, 255); border: 1px solid rgb(218, 220, 224); color: rgb(60, 64, 67); cursor: pointer; font-family: Roboto, Verdana; font-weight: 500; font-size: 14px; height: 40px; letter-spacing: 0.25px; padding: 0px 12px; position: relative; text-align: center; vertical-align: middle; width: auto;\");\n button.setAttribute('aria-label', buttonText);\n button.innerHTML = `\n <div style=\"display: flex; align-items: center; flex-flow: row nowrap; justify-content: space-between; height: 100%; position: relative; width: 100%;\">\n <div style=\"height: 18px; margin-right: 8px; min-width: 18px; width: 18px;\">\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18px\" height=\"18px\" viewBox=\"0 0 48 48\">\n <g>\n <path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path>\n <path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path>\n <path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path>\n <path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path>\n <path fill=\"none\" d=\"M0 0h48v48H0z\"></path>\n </g>\n </svg>\n </div>\n <p>${buttonText}</p>\n </div>`;\n return button;\n}\n//# sourceMappingURL=SignInButtonElement.js.map","export function assert(predicate, customMessage) {\n if (!predicate()) {\n const callerName = callingFunctionName();\n if (customMessage != undefined) {\n throw Error(customMessage + `. Error in ${callerName}.`);\n }\n throw Error(`Assert error, expected '${predicate}' to be true. Error in ${callerName}.`);\n }\n}\nexport function randomHexString(length) {\n let uint8RandomNumbers = new Uint8Array((length / 2) + 1);\n uint8RandomNumbers = crypto.getRandomValues(uint8RandomNumbers);\n const numbersAsHexString = Array.from(uint8RandomNumbers).map(x => x.toString(16)).join('');\n return numbersAsHexString.substring(0, length);\n}\nfunction callingFunctionName() {\n var _a;\n try {\n return (_a = (new Error()).stack) === null || _a === void 0 ? void 0 : _a.split(\"\\n\")[3].trim().split(\" \")[1];\n }\n catch (_b) {\n // ignore.\n }\n}\nexport function loadScript(url) {\n return new Promise((resolve, reject) => {\n const scriptEl = document.createElement('script');\n scriptEl.async = true;\n scriptEl.onerror = () => reject();\n scriptEl.onload = () => resolve();\n scriptEl.src = url;\n document.getElementsByTagName('head')[0].appendChild(scriptEl);\n });\n}\nexport function toSignInResultOption(signInResult) {\n if (signInResult.idToken) {\n return {\n isSuccess: true,\n success: signInResult\n };\n }\n else {\n return {\n isSuccess: false,\n noSuccess: signInResult\n };\n }\n}\nexport function toNotEnrichedSignInResultOption(signInResult) {\n if (signInResult.idToken) {\n return {\n isSuccess: true,\n success: signInResult\n };\n }\n else {\n return {\n isSuccess: false,\n noSuccess: signInResult\n };\n }\n}\n//# sourceMappingURL=helpers.js.map","// The Federated Credential Management (FedCM) browser API is a new privacy-preserving alternative to third-party cookies for federated identity providers like google.\nlet fedCMAbortController = undefined;\nconst cancelCalledAbortReason = 'CANCEL_CALLED';\nexport function isFedCMSupported() {\n return typeof (window) !== 'undefined' && 'IdentityCredential' in window;\n}\nexport async function signIn(autoSelect, clientId, nonce) {\n var _a, _b;\n try {\n // console.log(`IdentityCredential supported: ${isFedCMSupported()}`);\n fedCMAbortController = new AbortController();\n // see https://developers.google.com/privacy-sandbox/3pcd/fedcm\n // see https://developers.google.com/privacy-sandbox/blog/fedcm-auto-reauthn\n const identityCredential = await navigator.credentials.get({\n identity: {\n context: 'signin',\n providers: [\n {\n configURL: 'https://accounts.google.com/gsi/fedcm.json',\n clientId: clientId,\n // loginHint: ''\n nonce: nonce\n }\n ]\n },\n mediation: autoSelect ? 'optional' : 'required',\n signal: fedCMAbortController.signal\n });\n if (!(identityCredential === null || identityCredential === void 0 ? void 0 : identityCredential.token)) {\n return {};\n }\n return {\n idToken: identityCredential.token,\n isAutoSelected: identityCredential.isAutoSelected\n };\n }\n catch (e) {\n // NotSupportedError DOMException\n // IdentityCredentialError DOMException\n // NetworkError DOMException --> name: 'NetworkError'\n // NotAllowedError DOMException\n const name = (_a = e.name) !== null && _a !== void 0 ? _a : '';\n const message = (_b = e.message) !== null && _b !== void 0 ? _b : '';\n // console.log('fedCMSignIn error: ', e, name);\n if (message.includes(cancelCalledAbortReason)\n || (name === 'NetworkError' && message.includes('Error retrieving a token.'))) {\n return {\n noSuccessReasonCode: 'SIGN_IN_CANCELLED'\n };\n }\n return {};\n }\n finally {\n fedCMAbortController = undefined;\n }\n}\nexport function signOut(_authenticatedUserId) {\n navigator.credentials.preventSilentAccess();\n return Promise.resolve({ isSuccess: true });\n}\nexport function disconnect(_authenticatedUserId) {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\nexport function cancel() {\n fedCMAbortController === null || fedCMAbortController === void 0 ? void 0 : fedCMAbortController.abort({ message: cancelCalledAbortReason });\n}\n//# sourceMappingURL=FedCMAuthClient.js.map","/// <reference types=\"gapi\" />\n/// <reference types=\"google.accounts\" />\nimport { assert, loadScript } from '../helpers';\nconst gsiScriptUrl = 'https://accounts.google.com/gsi/client';\nlet gapiLoadedPromise = undefined;\nexport function initialize() {\n if (gapiLoadedPromise === undefined) {\n gapiLoadedPromise = loadScript(gsiScriptUrl);\n }\n return gapiLoadedPromise;\n}\nfunction oneTapInitialize(autoSelect, clientId, nonce, resolveSignInFunc, buttonWebOptions) {\n // The documenation says: \"If you do call the google.accounts.id.initialize method multiple times, only the configurations in the last call is remembered and used.\".\n // So it is safe to call initialize multiple times.\n google.accounts.id.initialize({\n client_id: clientId,\n callback: (credentialResponse) => handleCredentialResponse(credentialResponse, resolveSignInFunc),\n auto_select: autoSelect,\n // see https://developers.google.com/identity/gsi/web/guides/itp\n itp_support: true,\n cancel_on_tap_outside: false, // same as for browser FedCM API.\n ux_mode: (buttonWebOptions === null || buttonWebOptions === void 0 ? void 0 : buttonWebOptions.uxMode) || 'popup',\n nonce: nonce,\n use_fedcm_for_prompt: true,\n use_fedcm_for_button: true,\n // log_level: 'debug'\n });\n}\nexport async function signIn(autoSelect, clientId, nonce) {\n return new Promise(async (resolve, _reject) => {\n await withHandleError(resolve, async () => {\n // The resolve function is passed, so it can be called in handleCredentialResponse.\n oneTapInitialize(autoSelect, clientId, nonce, resolve);\n // Display the One Tap prompt or the browser native credential manager.\n google.accounts.id.prompt((notification) => {\n const configurationErrors = ['missing_client_id', 'unregistered_origin'];\n const momentReason = getMomentReason(notification);\n if (momentReason !== undefined && configurationErrors.includes(momentReason)) {\n resolve({\n noSuccessReasonCode: 'configuration_error',\n noSuccessAdditionalInfo: momentReason\n });\n }\n else if (momentReason === 'credential_returned') {\n // Do nothing, handled in handleCredentialResponse.\n }\n else if (notification.isSkippedMoment()\n || notification.isDismissedMoment()) {\n resolve({\n noSuccessReasonCode: momentReason\n });\n }\n else {\n // Do nothing, may be display moment indicating that the prompt is displayed.\n }\n });\n });\n });\n}\nfunction getMomentReason(notification) {\n if (notification.isSkippedMoment()) {\n return 'SIGN_IN_CANCELLED';\n }\n if (notification.isDismissedMoment()) {\n const dismissedReason = notification.getDismissedReason(); // \"credential_returned\" | \"cancel_called\" | \"flow_restarted\"\n if (dismissedReason === 'cancel_called') {\n return 'SIGN_IN_CANCELLED';\n }\n return dismissedReason;\n }\n return 'UNKNOWN';\n}\nexport async function renderSignInButton(clientId, nonce, parentElementId, options, gsiButtonConfiguration) {\n const parentElem = document.getElementById(parentElementId);\n assert(() => !!parentElem);\n const signInPromise = new Promise(async (resolve) => {\n await withHandleError(resolve, async () => {\n oneTapInitialize(false, clientId, nonce, resolve, options.webOptions);\n // // Adding a click_listener allows to detect when the popup is opened.\n // (gsiButtonConfiguration as any).click_listener = () => {\n // console.log('click_listener');\n // };\n google.accounts.id.renderButton(parentElem, gsiButtonConfiguration);\n });\n });\n return signInPromise;\n}\nfunction handleCredentialResponse(credentialResponse, resolveSignInFunc) {\n const signInResult = {\n idToken: credentialResponse.credential,\n isAutoSelected: credentialResponse.select_by === 'auto',\n };\n resolveSignInFunc(signInResult);\n}\nexport function cancel() {\n google.accounts.id.cancel();\n}\nexport function signOut(_authenticatedUserId) {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\nexport function disconnect(authenticatedUserId) {\n return new Promise(async (resolve) => {\n await withHandleErrorDisconnect(resolve, async () => {\n if (authenticatedUserId) {\n // Calling revoke method revokes all OAuth2 scopes previously granted by the Sign In With Google client library.\n google.accounts.id.revoke(authenticatedUserId, response => {\n if (response.successful) {\n resolve({ isSuccess: true });\n }\n else {\n resolve({ isSuccess: false, error: response.error });\n }\n });\n }\n else {\n resolve({ isSuccess: true });\n }\n });\n });\n}\n// To run code and call onResult with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\nasync function withHandleError(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n noSuccessAdditionalInfo: e.toString(),\n });\n }\n}\n// To run code and call onResult with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\nasync function withHandleErrorDisconnect(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n isSuccess: false,\n error: e.toString(),\n });\n }\n}\n//# sourceMappingURL=GoogleIdentityServicesClient.js.map","import { WebPlugin } from '@capacitor/core';\nimport { toNotEnrichedSignInResultOption } from '../helpers';\nimport * as FedCMAuthClient from './FedCMAuthClient';\nimport * as GoogleIdentityServicesClient from './GoogleIdentityServicesClient';\n/**\n * Web platform specific implementation of the Google One Tap Auth plugin.\n * Called from @see {@link GoogleSignIn}\n */\nexport class GoogleOneTapAuthWeb extends WebPlugin {\n async initialize(options) {\n this.initializeOptions = options;\n this.authClient = FedCMAuthClient.isFedCMSupported() ? FedCMAuthClient : GoogleIdentityServicesClient;\n await GoogleIdentityServicesClient.initialize();\n }\n async tryAutoOrOneTapSignIn() {\n let signInResult = await this.authClient.signIn(true, this.initializeOptions.clientId, this.initializeOptions.nonce);\n if (!signInResult.idToken\n // If the popup was cancelled, do not show it again.\n && signInResult.noSuccessReasonCode !== 'SIGN_IN_CANCELLED') {\n signInResult = await this.authClient.signIn(false, this.initializeOptions.clientId, this.initializeOptions.nonce);\n }\n return toNotEnrichedSignInResultOption(signInResult);\n }\n async tryOneTapSignIn() {\n const signInResult = await this.authClient.signIn(false, this.initializeOptions.clientId, this.initializeOptions.nonce);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n async tryAutoSignIn() {\n const signInResult = await this.authClient.signIn(true, this.initializeOptions.clientId, this.initializeOptions.nonce);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n signInWithGoogleButtonFlowForNativePlatform() {\n return Promise.reject('signInWithGoogleButtonFlowForNativePlatform: For the web platform, the sign-in with Google button flow cannot be triggered by an API call but only by pressing a button.');\n }\n async renderSignInButton(parentElementId, options, gsiButtonConfiguration) {\n const signInResult = await GoogleIdentityServicesClient.renderSignInButton(this.initializeOptions.clientId, this.initializeOptions.nonce, parentElementId, options, gsiButtonConfiguration);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n cancelOneTapDialog() {\n this.authClient.cancel();\n }\n signOut(authenticatedUserId) {\n return this.authClient.signOut(authenticatedUserId);\n }\n disconnect(authenticatedUserId) {\n return GoogleIdentityServicesClient.disconnect(authenticatedUserId);\n }\n}\n//# sourceMappingURL=GoogleSignInWeb.js.map","import { Capacitor, registerPlugin } from '@capacitor/core';\nimport { jwtDecode } from \"jwt-decode\";\nimport { createSignInButtonElement } from './SignInButtonElement';\nimport { assert, randomHexString } from './helpers';\nimport { GoogleOneTapAuthWeb } from './web/GoogleSignInWeb';\nconst GoogleOneTapAuthPlatform = registerPlugin('GoogleOneTapAuth', {\n web: () => new GoogleOneTapAuthWeb(),\n});\nvar InitializeStatus;\n(function (InitializeStatus) {\n InitializeStatus[InitializeStatus[\"NotInitialized\"] = 0] = \"NotInitialized\";\n InitializeStatus[InitializeStatus[\"Initializing\"] = 1] = \"Initializing\";\n InitializeStatus[InitializeStatus[\"Initialized\"] = 2] = \"Initialized\";\n})(InitializeStatus || (InitializeStatus = {}));\n/*\n * This file is the entry point for all plugin methods. It contains common logic to web, android, iOS or delegates to the specific implementation.\n */\nclass GoogleSignIn {\n constructor() {\n this.initializeStatus = InitializeStatus.NotInitialized;\n this.authenticatedUserId = undefined;\n this.isInitializedPromise = new Promise((resolve, reject) => {\n this.resolveIsInitializedPromise = resolve;\n this.rejectIsInitializedPromise = reject;\n });\n }\n /// Performs common or one-time initialization. Can be called multiple times.\n initialize(options) {\n try {\n if (this.initializeStatus === InitializeStatus.NotInitialized) {\n this.initializeStatus = InitializeStatus.Initializing;\n if (!options.clientId || options.clientId.endsWith(\"apps.googleusercontent.com\") == false) {\n throw new Error(\"clientId must end with 'apps.googleusercontent.com' but is: \" + options.clientId);\n }\n this.nonce = options.nonce = options.nonce || randomHexString(10);\n GoogleOneTapAuthPlatform.initialize(options).then(() => {\n this.initializeStatus = InitializeStatus.Initialized;\n this.resolveIsInitializedPromise();\n }).catch((e) => {\n this.initializeStatus = InitializeStatus.NotInitialized;\n this.rejectIsInitializedPromise(e);\n });\n }\n }\n catch (e) {\n this.rejectIsInitializedPromise(e.message);\n }\n return this.isInitializedPromise;\n }\n async ensureInitialized() {\n assert(() => this.initializeStatus !== InitializeStatus.NotInitialized, 'Must call initialize first.');\n if (this.initializeStatus === InitializeStatus.Initializing) {\n await this.isInitializedPromise;\n }\n }\n async tryAutoOrOneTapSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryAutoOrOneTapSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async tryAutoOrOneTapSignInWithCallback(onResult) {\n const signInResultOption = await this.tryAutoOrOneTapSignIn();\n onResult(signInResultOption);\n }\n async tryAutoSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryAutoSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async tryOneTapSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryOneTapSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async signInWithGoogleButtonFlowForNativePlatform() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSuccessSignInResultOption = await GoogleOneTapAuthPlatform.signInWithGoogleButtonFlowForNativePlatform();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSuccessSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n onResultReceived(signInResultOption) {\n if (signInResultOption.isSuccess) {\n this.authenticatedUserId = signInResultOption.success.userId;\n }\n }\n cancelOneTapDialog() {\n GoogleOneTapAuthPlatform.cancelOneTapDialog();\n }\n async signOut() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n const result = await GoogleOneTapAuthPlatform.signOut(this.authenticatedUserId);\n this.authenticatedUserId = undefined;\n resolve(result);\n });\n });\n }\n async disconnect() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n const result = await GoogleOneTapAuthPlatform.disconnect(this.authenticatedUserId);\n this.authenticatedUserId = undefined;\n resolve(result);\n });\n });\n }\n // deprecated\n async renderSignInButton(parentElementId, options, gsiButtonConfiguration) {\n return new Promise(async (resolve, reject) => {\n const resolveOnSuccess = (value) => {\n if (value.isSuccess) {\n resolve(value.success);\n }\n else if (value.noSuccess.noSuccessReasonCode === 'configuration_error') {\n reject(`configuration_error ${value.noSuccess.noSuccessAdditionalInfo}`);\n }\n };\n await this.renderSignInButtonWithCallback(parentElementId, options, gsiButtonConfiguration, resolveOnSuccess);\n });\n }\n async renderSignInButtonWithCallback(parentElementId, options, gsiButtonConfiguration, onResult) {\n await this.withHandleError(onResult, async () => {\n await this.ensureInitialized();\n const parentElem = document.getElementById(parentElementId);\n assert(() => !!parentElem);\n options.webOptions = options.webOptions || {};\n if (Capacitor.getPlatform() === 'web') {\n await this.renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, parentElementId, options, gsiButtonConfiguration);\n }\n else {\n await this.renderSignInButtonForNatitivePlatform(onResult, parentElem, gsiButtonConfiguration);\n }\n });\n }\n async renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, invisibleGoogleButtonDivId, options, gsiButtonConfiguration) {\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.renderSignInButton(invisibleGoogleButtonDivId, options, gsiButtonConfiguration);\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n onResult(enrichedSignInResultOption);\n }\n async renderSignInButtonForNatitivePlatform(onResult, parentElem, gsiButtonConfiguration) {\n const androidOrIosButtonElem = createSignInButtonElement(gsiButtonConfiguration);\n this.addOnClickHandlerToExistingButtonForNatitivePlatform(androidOrIosButtonElem, onResult);\n parentElem.appendChild(androidOrIosButtonElem);\n }\n addOnClickHandlerToExistingButtonForNatitivePlatform(androidOrIosButtonElem, onResult) {\n const onClickAction = () => {\n void this.withHandleError(onResult, async () => {\n const notEnrichedSuccessSignInResultOption = await GoogleOneTapAuthPlatform.signInWithGoogleButtonFlowForNativePlatform();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSuccessSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n onResult(enrichedSignInResultOption);\n });\n };\n androidOrIosButtonElem.onclick = onClickAction;\n }\n // deprecated\n async addSignInActionToExistingButton(buttonParentId, buttonId) {\n return new Promise(async (resolve, reject) => {\n try {\n const resolveOnSuccess = (value) => {\n if (value.isSuccess) {\n resolve(value.success);\n }\n else if (value.noSuccess.noSuccessReasonCode === 'configuration_error') {\n reject(`configuration_error ${value.noSuccess.noSuccessAdditionalInfo}`);\n }\n };\n await this.addSignInActionToExistingButtonWithCallback(buttonParentId, buttonId, resolveOnSuccess);\n }\n catch (e) {\n reject(e.toString());\n }\n });\n }\n async addSignInActionToExistingButtonWithCallback(buttonParentId, buttonId, onResult) {\n await this.withHandleError(onResult, async () => {\n await this.ensureInitialized();\n const parentElem = document.getElementById(buttonParentId);\n const buttonElem = document.getElementById(buttonId);\n assert(() => !!parentElem);\n assert(() => !!buttonElem);\n if (Capacitor.getPlatform() === 'web') {\n await this.addSignInActionToExistingButtonForWeb(parentElem, buttonElem, onResult);\n }\n else {\n this.addOnClickHandlerToExistingButtonForNatitivePlatform(buttonElem, onResult);\n }\n });\n }\n async addSignInActionToExistingButtonForWeb(buttonParentElem, buttonElem, onResult) {\n buttonParentElem.style.position = 'relative';\n buttonParentElem.style.overflow = 'hidden';\n // buttonParentElem!.style.border = '2px solid red'; // uncomment for debugging\n // The visible button width should be the same as the google button width.\n const { width: buttonElemWidth, height: buttonElemHeight } = await this.waitForElementOffsetWidthNotZero(buttonElem);\n assert(() => buttonElemWidth !== 0);\n assert(() => buttonElemHeight !== 0);\n // We can't set the height on the Google sign-in button, but scaling the parent element vertically has the same effect.\n const googleButtonHeight = 40;\n const scaleY = buttonElemHeight / googleButtonHeight;\n const invisibleGoogleButtonDiv = document.createElement('div');\n const invisibleGoogleButtonDivId = 'invisibleGoogleButtonDiv';\n invisibleGoogleButtonDiv.setAttribute('id', invisibleGoogleButtonDivId);\n invisibleGoogleButtonDiv.style.position = 'absolute';\n invisibleGoogleButtonDiv.style.top = '0px';\n invisibleGoogleButtonDiv.style.left = '0px';\n invisibleGoogleButtonDiv.style.width = `${buttonElemWidth}px`;\n invisibleGoogleButtonDiv.style.boxSizing = 'border-box';\n invisibleGoogleButtonDiv.style.opacity = '0.0001'; // change it for debugging\n invisibleGoogleButtonDiv.style.transformOrigin = 'top left';\n invisibleGoogleButtonDiv.style.transform = 'scale(1, ' + scaleY + ')';\n buttonElem.appendChild(invisibleGoogleButtonDiv);\n await this.renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, invisibleGoogleButtonDivId, {}, { type: 'standard', width: buttonElemWidth });\n }\n waitForElementOffsetWidthNotZero(element) {\n if (element.offsetWidth !== 0 && element.offsetHeight !== 0) {\n return Promise.resolve({ width: element.offsetWidth, height: element.offsetHeight });\n }\n return new Promise((resolve, reject) => {\n try {\n const resizeObserver = new ResizeObserver(() => {\n if (element.offsetWidth !== 0 && element.offsetHeight !== 0) {\n resolve({ width: element.offsetWidth, height: element.offsetHeight });\n }\n });\n resizeObserver.observe(element);\n }\n catch (e) {\n reject(e.toString());\n }\n });\n }\n getNonce() {\n assert(() => !!this.nonce, `The nonce is only set after ${() => this.initialize} was called.`);\n return this.nonce;\n }\n enrichOptionResultWithDecodedIdToken(signInResultOption) {\n if (signInResultOption.isSuccess === false) {\n return signInResultOption;\n }\n return Object.assign(Object.assign({}, signInResultOption), { success: this.enrichSuccessResultWithDecodedIdToken(signInResultOption.success) });\n }\n enrichSuccessResultWithDecodedIdToken(successSignInResult) {\n try {\n const decodedJwt = jwtDecode(successSignInResult.idToken);\n return Object.assign(Object.assign({}, successSignInResult), { decodedIdToken: decodedJwt, userId: decodedJwt.sub, email: decodedJwt.email });\n }\n catch (e) {\n throw new Error(`Failed to decode idToken: ${successSignInResult.idToken}. Error: ${e.message}`);\n }\n }\n // To run code and call onResult with a SignInResultOption with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\n async withHandleError(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n isSuccess: false,\n noSuccess: {\n noSuccessAdditionalInfo: e.toString(),\n }\n });\n }\n }\n}\nconst googleOneTapAuth = new GoogleSignIn();\nexport { googleOneTapAuth as GoogleOneTapAuth };\n//# sourceMappingURL=GoogleSignIn.js.map"],"names":["signIn","signOut","disconnect","cancel","WebPlugin","FedCMAuthClient.isFedCMSupported","GoogleIdentityServicesClient.initialize","GoogleIdentityServicesClient.renderSignInButton","GoogleIdentityServicesClient.disconnect","registerPlugin","Capacitor","jwtDecode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/SignInButtonElement.js","esm/helpers.js","esm/web/FedCMAuthClient.js","esm/web/GoogleIdentityServicesClient.js","esm/web/GoogleSignInWeb.js","esm/GoogleSignIn.js"],"sourcesContent":["export function createSignInButtonElement(gsiButtonConfiguration) {\n var _a;\n const localizedStrings = {\n en: { signin: 'Sign in', continue_with: 'Continue with Google', signin_with: 'Sign in with Google', signup_with: 'Sign up with Google' },\n ar: { signin: '\\u062a\\u0633\\u062c\\u064a\\u0644 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644', continue_with: '\\u0627\\u0644\\u0645\\u0648\\u0627\\u0635\\u0644\\u0629 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Google', signin_with: '\\u062a\\u0633\\u062c\\u064a\\u0644 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Google', signup_with: '\\u0627\\u0644\\u0627\\u0634\\u062a\\u0631\\u0627\\u0643 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 Google' },\n sr: { signin: '\\u041f\\u0440\\u0438\\u0458\\u0430\\u0432\\u0438 \\u043c\\u0435', continue_with: '\\u041d\\u0430\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0435 \\u0441\\u0430 Google-\\u043e\\u043c', signin_with: '\\u041f\\u0440\\u0438\\u0458\\u0430\\u0432\\u0438\\u0442\\u0435 \\u0441\\u0435 \\u043f\\u043e\\u043c\\u043e\\u045b\\u0443 Google-\\u0430', signup_with: '\\u0420\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0443\\u0458\\u0442\\u0435 \\u0441\\u0435 \\u043f\\u043e\\u043c\\u043e\\u045b\\u0443 Google-\\u0430' },\n nb: { signin: 'Logg p\\u00e5', continue_with: 'Fortsett med Google', signin_with: 'Logg p\\u00e5 med Google', signup_with: 'Registrer deg med Google' },\n pl: { signin: 'Zaloguj si\\u0119', continue_with: 'Kontynuuj przy u\\u017cyciu konta Google', signin_with: 'Zaloguj si\\u0119 przez Google', signup_with: 'Zarejestruj si\\u0119 przez Google' },\n vi: { signin: '\\u0110\\u0103ng nh\\u1eadp', continue_with: 'Ti\\u1ebfp t\\u1ee5c truy c\\u1eadp Google', signin_with: '\\u0110\\u0103ng nh\\u00e2\\u0323p b\\u0103\\u0300ng Google', signup_with: '\\u0110\\u0103ng k\\u00fd b\\u1eb1ng Google' },\n cs: { signin: 'P\\u0159ihl\\u00e1sit se', continue_with: 'Pokra\\u010dovat pomoc\\u00ed Googlu', signin_with: \"P\\u0159ihl\\u00e1sit se p\\u0159es Google\", signup_with: 'Registrace pomoc\\u00ed Googlu' },\n id: { signin: 'Login', continue_with: 'Lanjutkan dengan Google', signin_with: 'Login dengan Google', signup_with: 'Daftar dengan Google' },\n nl: { signin: 'Inloggen', continue_with: 'Doorgaan met Google', signin_with: 'Inloggen met Google', signup_with: 'Aanmelden bij Google' },\n gl: { signin: 'Iniciar sesi\\u00f3n', continue_with: 'Continuar con Google', signin_with: 'Iniciar sesi\\u00f3n con Google', signup_with: 'Iniciar sesi\\u00f3n con Google' },\n sv: { signin: 'Logga in', continue_with: 'Forts\\u00e4tt med Google', signin_with: 'Logga in med Google', signup_with: 'Registrera dig med Google' },\n lv: { signin: 'Pierakst\\u012b\\u0161an\\u0101s', continue_with: 'Turpin\\u0101t darbu ar Google', signin_with: 'Pierakstieties ar Google', signup_with: 'Re\\u0123istr\\u0113\\u0161an\\u0101s, izmantojot Google' },\n tr: { signin: 'Oturum a\\u00e7\\u0131n', continue_with: 'Google ile devam edin', signin_with: 'Google ile oturum a\\u00e7\\u0131n', signup_with: 'Google ile kaydolun' },\n it: { signin: 'Accedi', continue_with: 'Continua con Google', signin_with: 'Accedi con Google', signup_with: 'Registrati con Google' },\n sq: { signin: 'Identifikohu', continue_with: 'Vazhdo me Google', signin_with: 'Identifikohu me Google', signup_with: 'Regjistrohu me Google' },\n ro: { signin: 'Conecteaz\\u0103-te', continue_with: 'Continu\\u0103 cu Google', signin_with: 'Conecteaz\\u0103-te cu Google', signup_with: '\\u00censcrie-te cu Google' },\n de: { signin: 'Anmelden', continue_with: 'Weiter mit Google', signin_with: '\\u00dcber Google anmelden', signup_with: 'Mit Google anmelden' },\n ko: { signin: '\\ub85c\\uadf8\\uc778', continue_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\uacc4\\uc18d\\ud558\\uae30', signin_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\ub85c\\uadf8\\uc778', signup_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\uac00\\uc785\\ud558\\uae30' },\n fr: { signin: 'Se connecter', continue_with: 'Continuer avec Google', signin_with: 'Se connecter avec Google', signup_with: \"S'inscrire avec Google\" },\n kmr: { signin: 'Oturum a\\u00e7\\u0131n', continue_with: 'Google ile devam edin', signin_with: 'Google ile oturum a\\u00e7\\u0131n', signup_with: 'Google ile kaydolun' },\n zh: { signin: '\\u767b\\u5f55', continue_with: '\\u901a\\u8fc7 Google \\u7ee7\\u7eed\\u64cd\\u4f5c', signin_with: \"\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u767b\\u5f55\", signup_with: '\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u6ce8\\u518c' },\n 'zh-CN': { signin: '\\u767b\\u5f55', continue_with: '\\u901a\\u8fc7 Google \\u7ee7\\u7eed\\u64cd\\u4f5c', signin_with: \"\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u767b\\u5f55\", signup_with: '\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u6ce8\\u518c' },\n 'zh-HK': { signin: '\\u767b\\u5165', continue_with: '\\u7e7c\\u7e8c\\u900f\\u904e Google \\u5e33\\u6236\\u64cd\\u4f5c', signin_with: '\\u4f7f\\u7528 Google \\u5e33\\u6236\\u767b\\u5165', signup_with: '\\u4f7f\\u7528 Google \\u5e33\\u6236\\u8a3b\\u518a' },\n pt: { signin: 'Fazer login', continue_with: 'Continuar com o Google', signin_with: 'Fazer login com o Google', signup_with: 'Inscrever-se no Google' },\n es: { signin: 'Iniciar sesi\\u00f3n', continue_with: 'Continuar con Google', signin_with: 'Iniciar sesi\\u00f3n con Google', signup_with: 'Registrarse con Google' },\n };\n const locale = gsiButtonConfiguration === null || gsiButtonConfiguration === void 0 ? void 0 : gsiButtonConfiguration.locale;\n let localeTexts = locale && localizedStrings[locale];\n if (!localeTexts && locale) {\n const [language] = locale.split('-');\n localeTexts = localizedStrings[language] || localizedStrings['en'];\n }\n else if (!localeTexts) {\n localeTexts = localizedStrings['en'];\n }\n const text = (_a = gsiButtonConfiguration === null || gsiButtonConfiguration === void 0 ? void 0 : gsiButtonConfiguration.text) !== null && _a !== void 0 ? _a : 'signin_with';\n const buttonText = localeTexts[text];\n // HTML from https://github.com/inouiw/ReactSignInWithGoogleButton\n const button = document.createElement('button');\n button.setAttribute(\"style\", \"border-radius: 4px; background-color: rgb(255, 255, 255); border: 1px solid rgb(218, 220, 224); color: rgb(60, 64, 67); cursor: pointer; font-family: Roboto, Verdana; font-weight: 500; font-size: 14px; height: 40px; letter-spacing: 0.25px; padding: 0px 12px; position: relative; text-align: center; vertical-align: middle; width: auto;\");\n button.setAttribute('aria-label', buttonText);\n button.innerHTML = `\n <div style=\"display: flex; align-items: center; flex-flow: row nowrap; justify-content: space-between; height: 100%; position: relative; width: 100%;\">\n <div style=\"height: 18px; margin-right: 8px; min-width: 18px; width: 18px;\">\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18px\" height=\"18px\" viewBox=\"0 0 48 48\">\n <g>\n <path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path>\n <path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path>\n <path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path>\n <path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path>\n <path fill=\"none\" d=\"M0 0h48v48H0z\"></path>\n </g>\n </svg>\n </div>\n <p>${buttonText}</p>\n </div>`;\n return button;\n}\n//# sourceMappingURL=SignInButtonElement.js.map","export function assert(predicate, customMessage) {\n if (!predicate()) {\n const callerName = callingFunctionName();\n if (customMessage != undefined) {\n throw Error(customMessage + `. Error in ${callerName}.`);\n }\n throw Error(`Assert error, expected '${predicate}' to be true. Error in ${callerName}.`);\n }\n}\nexport function randomHexString(length) {\n let uint8RandomNumbers = new Uint8Array((length / 2) + 1);\n uint8RandomNumbers = crypto.getRandomValues(uint8RandomNumbers);\n const numbersAsHexString = Array.from(uint8RandomNumbers).map(x => x.toString(16)).join('');\n return numbersAsHexString.substring(0, length);\n}\nfunction callingFunctionName() {\n var _a;\n try {\n return (_a = (new Error()).stack) === null || _a === void 0 ? void 0 : _a.split(\"\\n\")[3].trim().split(\" \")[1];\n }\n catch (_b) {\n // ignore.\n }\n}\nexport function loadScript(url) {\n return new Promise((resolve, reject) => {\n const scriptEl = document.createElement('script');\n scriptEl.async = true;\n scriptEl.onerror = () => reject();\n scriptEl.onload = () => resolve();\n scriptEl.src = url;\n document.getElementsByTagName('head')[0].appendChild(scriptEl);\n });\n}\nexport function toSignInResultOption(signInResult) {\n if (signInResult.idToken) {\n return {\n isSuccess: true,\n success: signInResult\n };\n }\n else {\n return {\n isSuccess: false,\n noSuccess: signInResult\n };\n }\n}\nexport function toNotEnrichedSignInResultOption(signInResult) {\n if (signInResult.idToken) {\n return {\n isSuccess: true,\n success: signInResult\n };\n }\n else {\n return {\n isSuccess: false,\n noSuccess: signInResult\n };\n }\n}\n//# sourceMappingURL=helpers.js.map","// The Federated Credential Management (FedCM) browser API is a new privacy-preserving alternative to third-party cookies for federated identity providers like google.\nlet fedCMAbortController = undefined;\nconst cancelCalledAbortReason = 'CANCEL_CALLED';\nexport function isFedCMSupported() {\n return typeof (window) !== 'undefined' && 'IdentityCredential' in window;\n}\nexport async function signIn(autoSelect, clientId, nonce) {\n var _a, _b;\n try {\n // console.log(`IdentityCredential supported: ${isFedCMSupported()}`);\n fedCMAbortController = new AbortController();\n // see https://developers.google.com/privacy-sandbox/3pcd/fedcm\n // see https://developers.google.com/privacy-sandbox/blog/fedcm-auto-reauthn\n const identityCredential = await navigator.credentials.get({\n identity: {\n context: 'signin',\n providers: [\n {\n configURL: 'https://accounts.google.com/gsi/fedcm.json',\n clientId: clientId,\n // loginHint: ''\n nonce: nonce,\n fields: ['name', 'email', 'picture'],\n // Google builds the continuation popup URL from these params. Without them, the popup fails with\n // \"Required parameter is missing: response_type\". Same values as the google gsi/client library sends.\n params: {\n response_type: 'id_token',\n scope: 'email profile openid',\n ss_domain: location.origin,\n nonce: nonce !== null && nonce !== void 0 ? nonce : 'not_provided'\n }\n }\n ]\n },\n mediation: autoSelect ? 'optional' : 'required',\n signal: fedCMAbortController.signal\n });\n if (!(identityCredential === null || identityCredential === void 0 ? void 0 : identityCredential.token)) {\n return {};\n }\n return {\n idToken: identityCredential.token,\n isAutoSelected: identityCredential.isAutoSelected\n };\n }\n catch (e) {\n // NotSupportedError DOMException\n // IdentityCredentialError DOMException\n // NetworkError DOMException --> name: 'NetworkError'\n // NotAllowedError DOMException\n const name = (_a = e.name) !== null && _a !== void 0 ? _a : '';\n const message = (_b = e.message) !== null && _b !== void 0 ? _b : '';\n // console.log('fedCMSignIn error: ', e, name);\n if (message.includes(cancelCalledAbortReason)\n || (name === 'NetworkError' && message.includes('Error retrieving a token.'))) {\n return {\n noSuccessReasonCode: 'SIGN_IN_CANCELLED'\n };\n }\n return {};\n }\n finally {\n fedCMAbortController = undefined;\n }\n}\nexport function signOut(_authenticatedUserId) {\n navigator.credentials.preventSilentAccess();\n return Promise.resolve({ isSuccess: true });\n}\nexport function disconnect(_authenticatedUserId) {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\nexport function cancel() {\n fedCMAbortController === null || fedCMAbortController === void 0 ? void 0 : fedCMAbortController.abort({ message: cancelCalledAbortReason });\n}\n//# sourceMappingURL=FedCMAuthClient.js.map","/// <reference types=\"gapi\" />\n/// <reference types=\"google.accounts\" />\nimport { assert, loadScript } from '../helpers';\nconst gsiScriptUrl = 'https://accounts.google.com/gsi/client';\nlet gapiLoadedPromise = undefined;\nexport function initialize() {\n if (gapiLoadedPromise === undefined) {\n gapiLoadedPromise = loadScript(gsiScriptUrl);\n }\n return gapiLoadedPromise;\n}\nfunction oneTapInitialize(autoSelect, clientId, nonce, resolveSignInFunc, buttonWebOptions) {\n // The documenation says: \"If you do call the google.accounts.id.initialize method multiple times, only the configurations in the last call is remembered and used.\".\n // So it is safe to call initialize multiple times.\n google.accounts.id.initialize({\n client_id: clientId,\n callback: (credentialResponse) => handleCredentialResponse(credentialResponse, resolveSignInFunc),\n auto_select: autoSelect,\n // see https://developers.google.com/identity/gsi/web/guides/itp\n itp_support: true,\n cancel_on_tap_outside: false, // same as for browser FedCM API.\n ux_mode: (buttonWebOptions === null || buttonWebOptions === void 0 ? void 0 : buttonWebOptions.uxMode) || 'popup',\n nonce: nonce,\n use_fedcm_for_prompt: true,\n use_fedcm_for_button: true,\n // log_level: 'debug'\n });\n}\nexport async function signIn(autoSelect, clientId, nonce) {\n return new Promise(async (resolve, _reject) => {\n await withHandleError(resolve, async () => {\n // The resolve function is passed, so it can be called in handleCredentialResponse.\n oneTapInitialize(autoSelect, clientId, nonce, resolve);\n // Display the One Tap prompt or the browser native credential manager.\n google.accounts.id.prompt((notification) => {\n const configurationErrors = ['missing_client_id', 'unregistered_origin'];\n const momentReason = getMomentReason(notification);\n if (momentReason !== undefined && configurationErrors.includes(momentReason)) {\n resolve({\n noSuccessReasonCode: 'configuration_error',\n noSuccessAdditionalInfo: momentReason\n });\n }\n else if (momentReason === 'credential_returned') {\n // Do nothing, handled in handleCredentialResponse.\n }\n else if (notification.isSkippedMoment()\n || notification.isDismissedMoment()) {\n resolve({\n noSuccessReasonCode: momentReason\n });\n }\n else {\n // Do nothing, may be display moment indicating that the prompt is displayed.\n }\n });\n });\n });\n}\nfunction getMomentReason(notification) {\n if (notification.isSkippedMoment()) {\n return 'SIGN_IN_CANCELLED';\n }\n if (notification.isDismissedMoment()) {\n const dismissedReason = notification.getDismissedReason(); // \"credential_returned\" | \"cancel_called\" | \"flow_restarted\"\n if (dismissedReason === 'cancel_called') {\n return 'SIGN_IN_CANCELLED';\n }\n return dismissedReason;\n }\n return 'UNKNOWN';\n}\nexport async function renderSignInButton(clientId, nonce, parentElementId, options, gsiButtonConfiguration) {\n const parentElem = document.getElementById(parentElementId);\n assert(() => !!parentElem);\n const signInPromise = new Promise(async (resolve) => {\n await withHandleError(resolve, async () => {\n oneTapInitialize(false, clientId, nonce, resolve, options.webOptions);\n // // Adding a click_listener allows to detect when the popup is opened.\n // (gsiButtonConfiguration as any).click_listener = () => {\n // console.log('click_listener');\n // };\n google.accounts.id.renderButton(parentElem, gsiButtonConfiguration);\n });\n });\n return signInPromise;\n}\nfunction handleCredentialResponse(credentialResponse, resolveSignInFunc) {\n const signInResult = {\n idToken: credentialResponse.credential,\n isAutoSelected: credentialResponse.select_by === 'auto',\n };\n resolveSignInFunc(signInResult);\n}\nexport function cancel() {\n google.accounts.id.cancel();\n}\nexport function signOut(_authenticatedUserId) {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\nexport function disconnect(authenticatedUserId) {\n return new Promise(async (resolve) => {\n await withHandleErrorDisconnect(resolve, async () => {\n if (authenticatedUserId) {\n // Calling revoke method revokes all OAuth2 scopes previously granted by the Sign In With Google client library.\n google.accounts.id.revoke(authenticatedUserId, response => {\n if (response.successful) {\n resolve({ isSuccess: true });\n }\n else {\n resolve({ isSuccess: false, error: response.error });\n }\n });\n }\n else {\n resolve({ isSuccess: true });\n }\n });\n });\n}\n// To run code and call onResult with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\nasync function withHandleError(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n noSuccessAdditionalInfo: e.toString(),\n });\n }\n}\n// To run code and call onResult with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\nasync function withHandleErrorDisconnect(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n isSuccess: false,\n error: e.toString(),\n });\n }\n}\n//# sourceMappingURL=GoogleIdentityServicesClient.js.map","import { WebPlugin } from '@capacitor/core';\nimport { toNotEnrichedSignInResultOption } from '../helpers';\nimport * as FedCMAuthClient from './FedCMAuthClient';\nimport * as GoogleIdentityServicesClient from './GoogleIdentityServicesClient';\n/**\n * Web platform specific implementation of the Google One Tap Auth plugin.\n * Called from @see {@link GoogleSignIn}\n */\nexport class GoogleOneTapAuthWeb extends WebPlugin {\n async initialize(options) {\n this.initializeOptions = options;\n this.authClient = FedCMAuthClient.isFedCMSupported() ? FedCMAuthClient : GoogleIdentityServicesClient;\n await GoogleIdentityServicesClient.initialize();\n }\n async tryAutoOrOneTapSignIn() {\n let signInResult = await this.authClient.signIn(true, this.initializeOptions.clientId, this.initializeOptions.nonce);\n if (!signInResult.idToken\n // If the popup was cancelled, do not show it again.\n && signInResult.noSuccessReasonCode !== 'SIGN_IN_CANCELLED') {\n signInResult = await this.authClient.signIn(false, this.initializeOptions.clientId, this.initializeOptions.nonce);\n }\n return toNotEnrichedSignInResultOption(signInResult);\n }\n async tryOneTapSignIn() {\n const signInResult = await this.authClient.signIn(false, this.initializeOptions.clientId, this.initializeOptions.nonce);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n async tryAutoSignIn() {\n const signInResult = await this.authClient.signIn(true, this.initializeOptions.clientId, this.initializeOptions.nonce);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n signInWithGoogleButtonFlowForNativePlatform() {\n return Promise.reject('signInWithGoogleButtonFlowForNativePlatform: For the web platform, the sign-in with Google button flow cannot be triggered by an API call but only by pressing a button.');\n }\n async renderSignInButton(parentElementId, options, gsiButtonConfiguration) {\n const signInResult = await GoogleIdentityServicesClient.renderSignInButton(this.initializeOptions.clientId, this.initializeOptions.nonce, parentElementId, options, gsiButtonConfiguration);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n cancelOneTapDialog() {\n this.authClient.cancel();\n }\n signOut(authenticatedUserId) {\n return this.authClient.signOut(authenticatedUserId);\n }\n disconnect(authenticatedUserId) {\n return GoogleIdentityServicesClient.disconnect(authenticatedUserId);\n }\n}\n//# sourceMappingURL=GoogleSignInWeb.js.map","import { Capacitor, registerPlugin } from '@capacitor/core';\nimport { jwtDecode } from \"jwt-decode\";\nimport { createSignInButtonElement } from './SignInButtonElement';\nimport { assert, randomHexString } from './helpers';\nimport { GoogleOneTapAuthWeb } from './web/GoogleSignInWeb';\nconst GoogleOneTapAuthPlatform = registerPlugin('GoogleOneTapAuth', {\n web: () => new GoogleOneTapAuthWeb(),\n});\nvar InitializeStatus;\n(function (InitializeStatus) {\n InitializeStatus[InitializeStatus[\"NotInitialized\"] = 0] = \"NotInitialized\";\n InitializeStatus[InitializeStatus[\"Initializing\"] = 1] = \"Initializing\";\n InitializeStatus[InitializeStatus[\"Initialized\"] = 2] = \"Initialized\";\n})(InitializeStatus || (InitializeStatus = {}));\n/*\n * This file is the entry point for all plugin methods. It contains common logic to web, android, iOS or delegates to the specific implementation.\n */\nclass GoogleSignIn {\n constructor() {\n this.initializeStatus = InitializeStatus.NotInitialized;\n this.authenticatedUserId = undefined;\n this.isInitializedPromise = new Promise((resolve, reject) => {\n this.resolveIsInitializedPromise = resolve;\n this.rejectIsInitializedPromise = reject;\n });\n }\n /// Performs common or one-time initialization. Can be called multiple times.\n initialize(options) {\n try {\n if (this.initializeStatus === InitializeStatus.NotInitialized) {\n this.initializeStatus = InitializeStatus.Initializing;\n if (!options.clientId || options.clientId.endsWith(\"apps.googleusercontent.com\") == false) {\n throw new Error(\"clientId must end with 'apps.googleusercontent.com' but is: \" + options.clientId);\n }\n this.nonce = options.nonce = options.nonce || randomHexString(10);\n GoogleOneTapAuthPlatform.initialize(options).then(() => {\n this.initializeStatus = InitializeStatus.Initialized;\n this.resolveIsInitializedPromise();\n }).catch((e) => {\n this.initializeStatus = InitializeStatus.NotInitialized;\n this.rejectIsInitializedPromise(e);\n });\n }\n }\n catch (e) {\n this.rejectIsInitializedPromise(e.message);\n }\n return this.isInitializedPromise;\n }\n async ensureInitialized() {\n assert(() => this.initializeStatus !== InitializeStatus.NotInitialized, 'Must call initialize first.');\n if (this.initializeStatus === InitializeStatus.Initializing) {\n await this.isInitializedPromise;\n }\n }\n async tryAutoOrOneTapSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryAutoOrOneTapSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async tryAutoOrOneTapSignInWithCallback(onResult) {\n const signInResultOption = await this.tryAutoOrOneTapSignIn();\n onResult(signInResultOption);\n }\n async tryAutoSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryAutoSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async tryOneTapSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryOneTapSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async signInWithGoogleButtonFlowForNativePlatform() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSuccessSignInResultOption = await GoogleOneTapAuthPlatform.signInWithGoogleButtonFlowForNativePlatform();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSuccessSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n onResultReceived(signInResultOption) {\n if (signInResultOption.isSuccess) {\n this.authenticatedUserId = signInResultOption.success.userId;\n }\n }\n cancelOneTapDialog() {\n GoogleOneTapAuthPlatform.cancelOneTapDialog();\n }\n async signOut() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n const result = await GoogleOneTapAuthPlatform.signOut(this.authenticatedUserId);\n this.authenticatedUserId = undefined;\n resolve(result);\n });\n });\n }\n async disconnect() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n const result = await GoogleOneTapAuthPlatform.disconnect(this.authenticatedUserId);\n this.authenticatedUserId = undefined;\n resolve(result);\n });\n });\n }\n // deprecated\n async renderSignInButton(parentElementId, options, gsiButtonConfiguration) {\n return new Promise(async (resolve, reject) => {\n const resolveOnSuccess = (value) => {\n if (value.isSuccess) {\n resolve(value.success);\n }\n else if (value.noSuccess.noSuccessReasonCode === 'configuration_error') {\n reject(`configuration_error ${value.noSuccess.noSuccessAdditionalInfo}`);\n }\n };\n await this.renderSignInButtonWithCallback(parentElementId, options, gsiButtonConfiguration, resolveOnSuccess);\n });\n }\n async renderSignInButtonWithCallback(parentElementId, options, gsiButtonConfiguration, onResult) {\n await this.withHandleError(onResult, async () => {\n await this.ensureInitialized();\n const parentElem = document.getElementById(parentElementId);\n assert(() => !!parentElem);\n options.webOptions = options.webOptions || {};\n if (Capacitor.getPlatform() === 'web') {\n await this.renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, parentElementId, options, gsiButtonConfiguration);\n }\n else {\n await this.renderSignInButtonForNatitivePlatform(onResult, parentElem, gsiButtonConfiguration);\n }\n });\n }\n async renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, invisibleGoogleButtonDivId, options, gsiButtonConfiguration) {\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.renderSignInButton(invisibleGoogleButtonDivId, options, gsiButtonConfiguration);\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n onResult(enrichedSignInResultOption);\n }\n async renderSignInButtonForNatitivePlatform(onResult, parentElem, gsiButtonConfiguration) {\n const androidOrIosButtonElem = createSignInButtonElement(gsiButtonConfiguration);\n this.addOnClickHandlerToExistingButtonForNatitivePlatform(androidOrIosButtonElem, onResult);\n parentElem.appendChild(androidOrIosButtonElem);\n }\n addOnClickHandlerToExistingButtonForNatitivePlatform(androidOrIosButtonElem, onResult) {\n const onClickAction = () => {\n void this.withHandleError(onResult, async () => {\n const notEnrichedSuccessSignInResultOption = await GoogleOneTapAuthPlatform.signInWithGoogleButtonFlowForNativePlatform();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSuccessSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n onResult(enrichedSignInResultOption);\n });\n };\n androidOrIosButtonElem.onclick = onClickAction;\n }\n // deprecated\n async addSignInActionToExistingButton(buttonParentId, buttonId) {\n return new Promise(async (resolve, reject) => {\n try {\n const resolveOnSuccess = (value) => {\n if (value.isSuccess) {\n resolve(value.success);\n }\n else if (value.noSuccess.noSuccessReasonCode === 'configuration_error') {\n reject(`configuration_error ${value.noSuccess.noSuccessAdditionalInfo}`);\n }\n };\n await this.addSignInActionToExistingButtonWithCallback(buttonParentId, buttonId, resolveOnSuccess);\n }\n catch (e) {\n reject(e.toString());\n }\n });\n }\n async addSignInActionToExistingButtonWithCallback(buttonParentId, buttonId, onResult) {\n await this.withHandleError(onResult, async () => {\n await this.ensureInitialized();\n const parentElem = document.getElementById(buttonParentId);\n const buttonElem = document.getElementById(buttonId);\n assert(() => !!parentElem);\n assert(() => !!buttonElem);\n if (Capacitor.getPlatform() === 'web') {\n await this.addSignInActionToExistingButtonForWeb(parentElem, buttonElem, onResult);\n }\n else {\n this.addOnClickHandlerToExistingButtonForNatitivePlatform(buttonElem, onResult);\n }\n });\n }\n async addSignInActionToExistingButtonForWeb(buttonParentElem, buttonElem, onResult) {\n buttonParentElem.style.position = 'relative';\n buttonParentElem.style.overflow = 'hidden';\n // buttonParentElem!.style.border = '2px solid red'; // uncomment for debugging\n // The visible button width should be the same as the google button width.\n const { width: buttonElemWidth, height: buttonElemHeight } = await this.waitForElementOffsetWidthNotZero(buttonElem);\n assert(() => buttonElemWidth !== 0);\n assert(() => buttonElemHeight !== 0);\n // We can't set the height on the Google sign-in button, but scaling the parent element vertically has the same effect.\n const googleButtonHeight = 40;\n const scaleY = buttonElemHeight / googleButtonHeight;\n const invisibleGoogleButtonDiv = document.createElement('div');\n const invisibleGoogleButtonDivId = 'invisibleGoogleButtonDiv';\n invisibleGoogleButtonDiv.setAttribute('id', invisibleGoogleButtonDivId);\n invisibleGoogleButtonDiv.style.position = 'absolute';\n invisibleGoogleButtonDiv.style.top = '0px';\n invisibleGoogleButtonDiv.style.left = '0px';\n invisibleGoogleButtonDiv.style.width = `${buttonElemWidth}px`;\n invisibleGoogleButtonDiv.style.boxSizing = 'border-box';\n invisibleGoogleButtonDiv.style.opacity = '0.0001'; // change it for debugging\n invisibleGoogleButtonDiv.style.transformOrigin = 'top left';\n invisibleGoogleButtonDiv.style.transform = 'scale(1, ' + scaleY + ')';\n buttonElem.appendChild(invisibleGoogleButtonDiv);\n await this.renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, invisibleGoogleButtonDivId, {}, { type: 'standard', width: buttonElemWidth });\n }\n waitForElementOffsetWidthNotZero(element) {\n if (element.offsetWidth !== 0 && element.offsetHeight !== 0) {\n return Promise.resolve({ width: element.offsetWidth, height: element.offsetHeight });\n }\n return new Promise((resolve, reject) => {\n try {\n const resizeObserver = new ResizeObserver(() => {\n if (element.offsetWidth !== 0 && element.offsetHeight !== 0) {\n resolve({ width: element.offsetWidth, height: element.offsetHeight });\n }\n });\n resizeObserver.observe(element);\n }\n catch (e) {\n reject(e.toString());\n }\n });\n }\n getNonce() {\n assert(() => !!this.nonce, `The nonce is only set after ${() => this.initialize} was called.`);\n return this.nonce;\n }\n enrichOptionResultWithDecodedIdToken(signInResultOption) {\n if (signInResultOption.isSuccess === false) {\n return signInResultOption;\n }\n return Object.assign(Object.assign({}, signInResultOption), { success: this.enrichSuccessResultWithDecodedIdToken(signInResultOption.success) });\n }\n enrichSuccessResultWithDecodedIdToken(successSignInResult) {\n try {\n const decodedJwt = jwtDecode(successSignInResult.idToken);\n return Object.assign(Object.assign({}, successSignInResult), { decodedIdToken: decodedJwt, userId: decodedJwt.sub, email: decodedJwt.email });\n }\n catch (e) {\n throw new Error(`Failed to decode idToken: ${successSignInResult.idToken}. Error: ${e.message}`);\n }\n }\n // To run code and call onResult with a SignInResultOption with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\n async withHandleError(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n isSuccess: false,\n noSuccess: {\n noSuccessAdditionalInfo: e.toString(),\n }\n });\n }\n }\n}\nconst googleOneTapAuth = new GoogleSignIn();\nexport { googleOneTapAuth as GoogleOneTapAuth };\n//# sourceMappingURL=GoogleSignIn.js.map"],"names":["signIn","signOut","disconnect","cancel","WebPlugin","FedCMAuthClient.isFedCMSupported","GoogleIdentityServicesClient.initialize","GoogleIdentityServicesClient.renderSignInButton","GoogleIdentityServicesClient.disconnect","registerPlugin","Capacitor","jwtDecode"],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -133,7 +133,16 @@ var capacitorNativeGoogleOneTapSignin = (function (exports, core, jwtDecode) {
|
|
|
133
133
|
configURL: 'https://accounts.google.com/gsi/fedcm.json',
|
|
134
134
|
clientId: clientId,
|
|
135
135
|
// loginHint: ''
|
|
136
|
-
nonce: nonce
|
|
136
|
+
nonce: nonce,
|
|
137
|
+
fields: ['name', 'email', 'picture'],
|
|
138
|
+
// Google builds the continuation popup URL from these params. Without them, the popup fails with
|
|
139
|
+
// "Required parameter is missing: response_type". Same values as the google gsi/client library sends.
|
|
140
|
+
params: {
|
|
141
|
+
response_type: 'id_token',
|
|
142
|
+
scope: 'email profile openid',
|
|
143
|
+
ss_domain: location.origin,
|
|
144
|
+
nonce: nonce !== null && nonce !== void 0 ? nonce : 'not_provided'
|
|
145
|
+
}
|
|
137
146
|
}
|
|
138
147
|
]
|
|
139
148
|
},
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/SignInButtonElement.js","esm/helpers.js","esm/web/FedCMAuthClient.js","esm/web/GoogleIdentityServicesClient.js","esm/web/GoogleSignInWeb.js","esm/GoogleSignIn.js"],"sourcesContent":["export function createSignInButtonElement(gsiButtonConfiguration) {\n var _a;\n const localizedStrings = {\n en: { signin: 'Sign in', continue_with: 'Continue with Google', signin_with: 'Sign in with Google', signup_with: 'Sign up with Google' },\n ar: { signin: '\\u062a\\u0633\\u062c\\u064a\\u0644 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644', continue_with: '\\u0627\\u0644\\u0645\\u0648\\u0627\\u0635\\u0644\\u0629 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Google', signin_with: '\\u062a\\u0633\\u062c\\u064a\\u0644 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Google', signup_with: '\\u0627\\u0644\\u0627\\u0634\\u062a\\u0631\\u0627\\u0643 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 Google' },\n sr: { signin: '\\u041f\\u0440\\u0438\\u0458\\u0430\\u0432\\u0438 \\u043c\\u0435', continue_with: '\\u041d\\u0430\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0435 \\u0441\\u0430 Google-\\u043e\\u043c', signin_with: '\\u041f\\u0440\\u0438\\u0458\\u0430\\u0432\\u0438\\u0442\\u0435 \\u0441\\u0435 \\u043f\\u043e\\u043c\\u043e\\u045b\\u0443 Google-\\u0430', signup_with: '\\u0420\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0443\\u0458\\u0442\\u0435 \\u0441\\u0435 \\u043f\\u043e\\u043c\\u043e\\u045b\\u0443 Google-\\u0430' },\n nb: { signin: 'Logg p\\u00e5', continue_with: 'Fortsett med Google', signin_with: 'Logg p\\u00e5 med Google', signup_with: 'Registrer deg med Google' },\n pl: { signin: 'Zaloguj si\\u0119', continue_with: 'Kontynuuj przy u\\u017cyciu konta Google', signin_with: 'Zaloguj si\\u0119 przez Google', signup_with: 'Zarejestruj si\\u0119 przez Google' },\n vi: { signin: '\\u0110\\u0103ng nh\\u1eadp', continue_with: 'Ti\\u1ebfp t\\u1ee5c truy c\\u1eadp Google', signin_with: '\\u0110\\u0103ng nh\\u00e2\\u0323p b\\u0103\\u0300ng Google', signup_with: '\\u0110\\u0103ng k\\u00fd b\\u1eb1ng Google' },\n cs: { signin: 'P\\u0159ihl\\u00e1sit se', continue_with: 'Pokra\\u010dovat pomoc\\u00ed Googlu', signin_with: \"P\\u0159ihl\\u00e1sit se p\\u0159es Google\", signup_with: 'Registrace pomoc\\u00ed Googlu' },\n id: { signin: 'Login', continue_with: 'Lanjutkan dengan Google', signin_with: 'Login dengan Google', signup_with: 'Daftar dengan Google' },\n nl: { signin: 'Inloggen', continue_with: 'Doorgaan met Google', signin_with: 'Inloggen met Google', signup_with: 'Aanmelden bij Google' },\n gl: { signin: 'Iniciar sesi\\u00f3n', continue_with: 'Continuar con Google', signin_with: 'Iniciar sesi\\u00f3n con Google', signup_with: 'Iniciar sesi\\u00f3n con Google' },\n sv: { signin: 'Logga in', continue_with: 'Forts\\u00e4tt med Google', signin_with: 'Logga in med Google', signup_with: 'Registrera dig med Google' },\n lv: { signin: 'Pierakst\\u012b\\u0161an\\u0101s', continue_with: 'Turpin\\u0101t darbu ar Google', signin_with: 'Pierakstieties ar Google', signup_with: 'Re\\u0123istr\\u0113\\u0161an\\u0101s, izmantojot Google' },\n tr: { signin: 'Oturum a\\u00e7\\u0131n', continue_with: 'Google ile devam edin', signin_with: 'Google ile oturum a\\u00e7\\u0131n', signup_with: 'Google ile kaydolun' },\n it: { signin: 'Accedi', continue_with: 'Continua con Google', signin_with: 'Accedi con Google', signup_with: 'Registrati con Google' },\n sq: { signin: 'Identifikohu', continue_with: 'Vazhdo me Google', signin_with: 'Identifikohu me Google', signup_with: 'Regjistrohu me Google' },\n ro: { signin: 'Conecteaz\\u0103-te', continue_with: 'Continu\\u0103 cu Google', signin_with: 'Conecteaz\\u0103-te cu Google', signup_with: '\\u00censcrie-te cu Google' },\n de: { signin: 'Anmelden', continue_with: 'Weiter mit Google', signin_with: '\\u00dcber Google anmelden', signup_with: 'Mit Google anmelden' },\n ko: { signin: '\\ub85c\\uadf8\\uc778', continue_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\uacc4\\uc18d\\ud558\\uae30', signin_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\ub85c\\uadf8\\uc778', signup_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\uac00\\uc785\\ud558\\uae30' },\n fr: { signin: 'Se connecter', continue_with: 'Continuer avec Google', signin_with: 'Se connecter avec Google', signup_with: \"S'inscrire avec Google\" },\n kmr: { signin: 'Oturum a\\u00e7\\u0131n', continue_with: 'Google ile devam edin', signin_with: 'Google ile oturum a\\u00e7\\u0131n', signup_with: 'Google ile kaydolun' },\n zh: { signin: '\\u767b\\u5f55', continue_with: '\\u901a\\u8fc7 Google \\u7ee7\\u7eed\\u64cd\\u4f5c', signin_with: \"\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u767b\\u5f55\", signup_with: '\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u6ce8\\u518c' },\n 'zh-CN': { signin: '\\u767b\\u5f55', continue_with: '\\u901a\\u8fc7 Google \\u7ee7\\u7eed\\u64cd\\u4f5c', signin_with: \"\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u767b\\u5f55\", signup_with: '\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u6ce8\\u518c' },\n 'zh-HK': { signin: '\\u767b\\u5165', continue_with: '\\u7e7c\\u7e8c\\u900f\\u904e Google \\u5e33\\u6236\\u64cd\\u4f5c', signin_with: '\\u4f7f\\u7528 Google \\u5e33\\u6236\\u767b\\u5165', signup_with: '\\u4f7f\\u7528 Google \\u5e33\\u6236\\u8a3b\\u518a' },\n pt: { signin: 'Fazer login', continue_with: 'Continuar com o Google', signin_with: 'Fazer login com o Google', signup_with: 'Inscrever-se no Google' },\n es: { signin: 'Iniciar sesi\\u00f3n', continue_with: 'Continuar con Google', signin_with: 'Iniciar sesi\\u00f3n con Google', signup_with: 'Registrarse con Google' },\n };\n const locale = gsiButtonConfiguration === null || gsiButtonConfiguration === void 0 ? void 0 : gsiButtonConfiguration.locale;\n let localeTexts = locale && localizedStrings[locale];\n if (!localeTexts && locale) {\n const [language] = locale.split('-');\n localeTexts = localizedStrings[language] || localizedStrings['en'];\n }\n else if (!localeTexts) {\n localeTexts = localizedStrings['en'];\n }\n const text = (_a = gsiButtonConfiguration === null || gsiButtonConfiguration === void 0 ? void 0 : gsiButtonConfiguration.text) !== null && _a !== void 0 ? _a : 'signin_with';\n const buttonText = localeTexts[text];\n // HTML from https://github.com/inouiw/ReactSignInWithGoogleButton\n const button = document.createElement('button');\n button.setAttribute(\"style\", \"border-radius: 4px; background-color: rgb(255, 255, 255); border: 1px solid rgb(218, 220, 224); color: rgb(60, 64, 67); cursor: pointer; font-family: Roboto, Verdana; font-weight: 500; font-size: 14px; height: 40px; letter-spacing: 0.25px; padding: 0px 12px; position: relative; text-align: center; vertical-align: middle; width: auto;\");\n button.setAttribute('aria-label', buttonText);\n button.innerHTML = `\n <div style=\"display: flex; align-items: center; flex-flow: row nowrap; justify-content: space-between; height: 100%; position: relative; width: 100%;\">\n <div style=\"height: 18px; margin-right: 8px; min-width: 18px; width: 18px;\">\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18px\" height=\"18px\" viewBox=\"0 0 48 48\">\n <g>\n <path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path>\n <path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path>\n <path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path>\n <path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path>\n <path fill=\"none\" d=\"M0 0h48v48H0z\"></path>\n </g>\n </svg>\n </div>\n <p>${buttonText}</p>\n </div>`;\n return button;\n}\n//# sourceMappingURL=SignInButtonElement.js.map","export function assert(predicate, customMessage) {\n if (!predicate()) {\n const callerName = callingFunctionName();\n if (customMessage != undefined) {\n throw Error(customMessage + `. Error in ${callerName}.`);\n }\n throw Error(`Assert error, expected '${predicate}' to be true. Error in ${callerName}.`);\n }\n}\nexport function randomHexString(length) {\n let uint8RandomNumbers = new Uint8Array((length / 2) + 1);\n uint8RandomNumbers = crypto.getRandomValues(uint8RandomNumbers);\n const numbersAsHexString = Array.from(uint8RandomNumbers).map(x => x.toString(16)).join('');\n return numbersAsHexString.substring(0, length);\n}\nfunction callingFunctionName() {\n var _a;\n try {\n return (_a = (new Error()).stack) === null || _a === void 0 ? void 0 : _a.split(\"\\n\")[3].trim().split(\" \")[1];\n }\n catch (_b) {\n // ignore.\n }\n}\nexport function loadScript(url) {\n return new Promise((resolve, reject) => {\n const scriptEl = document.createElement('script');\n scriptEl.async = true;\n scriptEl.onerror = () => reject();\n scriptEl.onload = () => resolve();\n scriptEl.src = url;\n document.getElementsByTagName('head')[0].appendChild(scriptEl);\n });\n}\nexport function toSignInResultOption(signInResult) {\n if (signInResult.idToken) {\n return {\n isSuccess: true,\n success: signInResult\n };\n }\n else {\n return {\n isSuccess: false,\n noSuccess: signInResult\n };\n }\n}\nexport function toNotEnrichedSignInResultOption(signInResult) {\n if (signInResult.idToken) {\n return {\n isSuccess: true,\n success: signInResult\n };\n }\n else {\n return {\n isSuccess: false,\n noSuccess: signInResult\n };\n }\n}\n//# sourceMappingURL=helpers.js.map","// The Federated Credential Management (FedCM) browser API is a new privacy-preserving alternative to third-party cookies for federated identity providers like google.\nlet fedCMAbortController = undefined;\nconst cancelCalledAbortReason = 'CANCEL_CALLED';\nexport function isFedCMSupported() {\n return typeof (window) !== 'undefined' && 'IdentityCredential' in window;\n}\nexport async function signIn(autoSelect, clientId, nonce) {\n var _a, _b;\n try {\n // console.log(`IdentityCredential supported: ${isFedCMSupported()}`);\n fedCMAbortController = new AbortController();\n // see https://developers.google.com/privacy-sandbox/3pcd/fedcm\n // see https://developers.google.com/privacy-sandbox/blog/fedcm-auto-reauthn\n const identityCredential = await navigator.credentials.get({\n identity: {\n context: 'signin',\n providers: [\n {\n configURL: 'https://accounts.google.com/gsi/fedcm.json',\n clientId: clientId,\n // loginHint: ''\n nonce: nonce\n }\n ]\n },\n mediation: autoSelect ? 'optional' : 'required',\n signal: fedCMAbortController.signal\n });\n if (!(identityCredential === null || identityCredential === void 0 ? void 0 : identityCredential.token)) {\n return {};\n }\n return {\n idToken: identityCredential.token,\n isAutoSelected: identityCredential.isAutoSelected\n };\n }\n catch (e) {\n // NotSupportedError DOMException\n // IdentityCredentialError DOMException\n // NetworkError DOMException --> name: 'NetworkError'\n // NotAllowedError DOMException\n const name = (_a = e.name) !== null && _a !== void 0 ? _a : '';\n const message = (_b = e.message) !== null && _b !== void 0 ? _b : '';\n // console.log('fedCMSignIn error: ', e, name);\n if (message.includes(cancelCalledAbortReason)\n || (name === 'NetworkError' && message.includes('Error retrieving a token.'))) {\n return {\n noSuccessReasonCode: 'SIGN_IN_CANCELLED'\n };\n }\n return {};\n }\n finally {\n fedCMAbortController = undefined;\n }\n}\nexport function signOut(_authenticatedUserId) {\n navigator.credentials.preventSilentAccess();\n return Promise.resolve({ isSuccess: true });\n}\nexport function disconnect(_authenticatedUserId) {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\nexport function cancel() {\n fedCMAbortController === null || fedCMAbortController === void 0 ? void 0 : fedCMAbortController.abort({ message: cancelCalledAbortReason });\n}\n//# sourceMappingURL=FedCMAuthClient.js.map","/// <reference types=\"gapi\" />\n/// <reference types=\"google.accounts\" />\nimport { assert, loadScript } from '../helpers';\nconst gsiScriptUrl = 'https://accounts.google.com/gsi/client';\nlet gapiLoadedPromise = undefined;\nexport function initialize() {\n if (gapiLoadedPromise === undefined) {\n gapiLoadedPromise = loadScript(gsiScriptUrl);\n }\n return gapiLoadedPromise;\n}\nfunction oneTapInitialize(autoSelect, clientId, nonce, resolveSignInFunc, buttonWebOptions) {\n // The documenation says: \"If you do call the google.accounts.id.initialize method multiple times, only the configurations in the last call is remembered and used.\".\n // So it is safe to call initialize multiple times.\n google.accounts.id.initialize({\n client_id: clientId,\n callback: (credentialResponse) => handleCredentialResponse(credentialResponse, resolveSignInFunc),\n auto_select: autoSelect,\n // see https://developers.google.com/identity/gsi/web/guides/itp\n itp_support: true,\n cancel_on_tap_outside: false, // same as for browser FedCM API.\n ux_mode: (buttonWebOptions === null || buttonWebOptions === void 0 ? void 0 : buttonWebOptions.uxMode) || 'popup',\n nonce: nonce,\n use_fedcm_for_prompt: true,\n use_fedcm_for_button: true,\n // log_level: 'debug'\n });\n}\nexport async function signIn(autoSelect, clientId, nonce) {\n return new Promise(async (resolve, _reject) => {\n await withHandleError(resolve, async () => {\n // The resolve function is passed, so it can be called in handleCredentialResponse.\n oneTapInitialize(autoSelect, clientId, nonce, resolve);\n // Display the One Tap prompt or the browser native credential manager.\n google.accounts.id.prompt((notification) => {\n const configurationErrors = ['missing_client_id', 'unregistered_origin'];\n const momentReason = getMomentReason(notification);\n if (momentReason !== undefined && configurationErrors.includes(momentReason)) {\n resolve({\n noSuccessReasonCode: 'configuration_error',\n noSuccessAdditionalInfo: momentReason\n });\n }\n else if (momentReason === 'credential_returned') {\n // Do nothing, handled in handleCredentialResponse.\n }\n else if (notification.isSkippedMoment()\n || notification.isDismissedMoment()) {\n resolve({\n noSuccessReasonCode: momentReason\n });\n }\n else {\n // Do nothing, may be display moment indicating that the prompt is displayed.\n }\n });\n });\n });\n}\nfunction getMomentReason(notification) {\n if (notification.isSkippedMoment()) {\n return 'SIGN_IN_CANCELLED';\n }\n if (notification.isDismissedMoment()) {\n const dismissedReason = notification.getDismissedReason(); // \"credential_returned\" | \"cancel_called\" | \"flow_restarted\"\n if (dismissedReason === 'cancel_called') {\n return 'SIGN_IN_CANCELLED';\n }\n return dismissedReason;\n }\n return 'UNKNOWN';\n}\nexport async function renderSignInButton(clientId, nonce, parentElementId, options, gsiButtonConfiguration) {\n const parentElem = document.getElementById(parentElementId);\n assert(() => !!parentElem);\n const signInPromise = new Promise(async (resolve) => {\n await withHandleError(resolve, async () => {\n oneTapInitialize(false, clientId, nonce, resolve, options.webOptions);\n // // Adding a click_listener allows to detect when the popup is opened.\n // (gsiButtonConfiguration as any).click_listener = () => {\n // console.log('click_listener');\n // };\n google.accounts.id.renderButton(parentElem, gsiButtonConfiguration);\n });\n });\n return signInPromise;\n}\nfunction handleCredentialResponse(credentialResponse, resolveSignInFunc) {\n const signInResult = {\n idToken: credentialResponse.credential,\n isAutoSelected: credentialResponse.select_by === 'auto',\n };\n resolveSignInFunc(signInResult);\n}\nexport function cancel() {\n google.accounts.id.cancel();\n}\nexport function signOut(_authenticatedUserId) {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\nexport function disconnect(authenticatedUserId) {\n return new Promise(async (resolve) => {\n await withHandleErrorDisconnect(resolve, async () => {\n if (authenticatedUserId) {\n // Calling revoke method revokes all OAuth2 scopes previously granted by the Sign In With Google client library.\n google.accounts.id.revoke(authenticatedUserId, response => {\n if (response.successful) {\n resolve({ isSuccess: true });\n }\n else {\n resolve({ isSuccess: false, error: response.error });\n }\n });\n }\n else {\n resolve({ isSuccess: true });\n }\n });\n });\n}\n// To run code and call onResult with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\nasync function withHandleError(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n noSuccessAdditionalInfo: e.toString(),\n });\n }\n}\n// To run code and call onResult with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\nasync function withHandleErrorDisconnect(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n isSuccess: false,\n error: e.toString(),\n });\n }\n}\n//# sourceMappingURL=GoogleIdentityServicesClient.js.map","import { WebPlugin } from '@capacitor/core';\nimport { toNotEnrichedSignInResultOption } from '../helpers';\nimport * as FedCMAuthClient from './FedCMAuthClient';\nimport * as GoogleIdentityServicesClient from './GoogleIdentityServicesClient';\n/**\n * Web platform specific implementation of the Google One Tap Auth plugin.\n * Called from @see {@link GoogleSignIn}\n */\nexport class GoogleOneTapAuthWeb extends WebPlugin {\n async initialize(options) {\n this.initializeOptions = options;\n this.authClient = FedCMAuthClient.isFedCMSupported() ? FedCMAuthClient : GoogleIdentityServicesClient;\n await GoogleIdentityServicesClient.initialize();\n }\n async tryAutoOrOneTapSignIn() {\n let signInResult = await this.authClient.signIn(true, this.initializeOptions.clientId, this.initializeOptions.nonce);\n if (!signInResult.idToken\n // If the popup was cancelled, do not show it again.\n && signInResult.noSuccessReasonCode !== 'SIGN_IN_CANCELLED') {\n signInResult = await this.authClient.signIn(false, this.initializeOptions.clientId, this.initializeOptions.nonce);\n }\n return toNotEnrichedSignInResultOption(signInResult);\n }\n async tryOneTapSignIn() {\n const signInResult = await this.authClient.signIn(false, this.initializeOptions.clientId, this.initializeOptions.nonce);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n async tryAutoSignIn() {\n const signInResult = await this.authClient.signIn(true, this.initializeOptions.clientId, this.initializeOptions.nonce);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n signInWithGoogleButtonFlowForNativePlatform() {\n return Promise.reject('signInWithGoogleButtonFlowForNativePlatform: For the web platform, the sign-in with Google button flow cannot be triggered by an API call but only by pressing a button.');\n }\n async renderSignInButton(parentElementId, options, gsiButtonConfiguration) {\n const signInResult = await GoogleIdentityServicesClient.renderSignInButton(this.initializeOptions.clientId, this.initializeOptions.nonce, parentElementId, options, gsiButtonConfiguration);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n cancelOneTapDialog() {\n this.authClient.cancel();\n }\n signOut(authenticatedUserId) {\n return this.authClient.signOut(authenticatedUserId);\n }\n disconnect(authenticatedUserId) {\n return GoogleIdentityServicesClient.disconnect(authenticatedUserId);\n }\n}\n//# sourceMappingURL=GoogleSignInWeb.js.map","import { Capacitor, registerPlugin } from '@capacitor/core';\nimport { jwtDecode } from \"jwt-decode\";\nimport { createSignInButtonElement } from './SignInButtonElement';\nimport { assert, randomHexString } from './helpers';\nimport { GoogleOneTapAuthWeb } from './web/GoogleSignInWeb';\nconst GoogleOneTapAuthPlatform = registerPlugin('GoogleOneTapAuth', {\n web: () => new GoogleOneTapAuthWeb(),\n});\nvar InitializeStatus;\n(function (InitializeStatus) {\n InitializeStatus[InitializeStatus[\"NotInitialized\"] = 0] = \"NotInitialized\";\n InitializeStatus[InitializeStatus[\"Initializing\"] = 1] = \"Initializing\";\n InitializeStatus[InitializeStatus[\"Initialized\"] = 2] = \"Initialized\";\n})(InitializeStatus || (InitializeStatus = {}));\n/*\n * This file is the entry point for all plugin methods. It contains common logic to web, android, iOS or delegates to the specific implementation.\n */\nclass GoogleSignIn {\n constructor() {\n this.initializeStatus = InitializeStatus.NotInitialized;\n this.authenticatedUserId = undefined;\n this.isInitializedPromise = new Promise((resolve, reject) => {\n this.resolveIsInitializedPromise = resolve;\n this.rejectIsInitializedPromise = reject;\n });\n }\n /// Performs common or one-time initialization. Can be called multiple times.\n initialize(options) {\n try {\n if (this.initializeStatus === InitializeStatus.NotInitialized) {\n this.initializeStatus = InitializeStatus.Initializing;\n if (!options.clientId || options.clientId.endsWith(\"apps.googleusercontent.com\") == false) {\n throw new Error(\"clientId must end with 'apps.googleusercontent.com' but is: \" + options.clientId);\n }\n this.nonce = options.nonce = options.nonce || randomHexString(10);\n GoogleOneTapAuthPlatform.initialize(options).then(() => {\n this.initializeStatus = InitializeStatus.Initialized;\n this.resolveIsInitializedPromise();\n }).catch((e) => {\n this.initializeStatus = InitializeStatus.NotInitialized;\n this.rejectIsInitializedPromise(e);\n });\n }\n }\n catch (e) {\n this.rejectIsInitializedPromise(e.message);\n }\n return this.isInitializedPromise;\n }\n async ensureInitialized() {\n assert(() => this.initializeStatus !== InitializeStatus.NotInitialized, 'Must call initialize first.');\n if (this.initializeStatus === InitializeStatus.Initializing) {\n await this.isInitializedPromise;\n }\n }\n async tryAutoOrOneTapSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryAutoOrOneTapSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async tryAutoOrOneTapSignInWithCallback(onResult) {\n const signInResultOption = await this.tryAutoOrOneTapSignIn();\n onResult(signInResultOption);\n }\n async tryAutoSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryAutoSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async tryOneTapSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryOneTapSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async signInWithGoogleButtonFlowForNativePlatform() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSuccessSignInResultOption = await GoogleOneTapAuthPlatform.signInWithGoogleButtonFlowForNativePlatform();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSuccessSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n onResultReceived(signInResultOption) {\n if (signInResultOption.isSuccess) {\n this.authenticatedUserId = signInResultOption.success.userId;\n }\n }\n cancelOneTapDialog() {\n GoogleOneTapAuthPlatform.cancelOneTapDialog();\n }\n async signOut() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n const result = await GoogleOneTapAuthPlatform.signOut(this.authenticatedUserId);\n this.authenticatedUserId = undefined;\n resolve(result);\n });\n });\n }\n async disconnect() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n const result = await GoogleOneTapAuthPlatform.disconnect(this.authenticatedUserId);\n this.authenticatedUserId = undefined;\n resolve(result);\n });\n });\n }\n // deprecated\n async renderSignInButton(parentElementId, options, gsiButtonConfiguration) {\n return new Promise(async (resolve, reject) => {\n const resolveOnSuccess = (value) => {\n if (value.isSuccess) {\n resolve(value.success);\n }\n else if (value.noSuccess.noSuccessReasonCode === 'configuration_error') {\n reject(`configuration_error ${value.noSuccess.noSuccessAdditionalInfo}`);\n }\n };\n await this.renderSignInButtonWithCallback(parentElementId, options, gsiButtonConfiguration, resolveOnSuccess);\n });\n }\n async renderSignInButtonWithCallback(parentElementId, options, gsiButtonConfiguration, onResult) {\n await this.withHandleError(onResult, async () => {\n await this.ensureInitialized();\n const parentElem = document.getElementById(parentElementId);\n assert(() => !!parentElem);\n options.webOptions = options.webOptions || {};\n if (Capacitor.getPlatform() === 'web') {\n await this.renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, parentElementId, options, gsiButtonConfiguration);\n }\n else {\n await this.renderSignInButtonForNatitivePlatform(onResult, parentElem, gsiButtonConfiguration);\n }\n });\n }\n async renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, invisibleGoogleButtonDivId, options, gsiButtonConfiguration) {\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.renderSignInButton(invisibleGoogleButtonDivId, options, gsiButtonConfiguration);\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n onResult(enrichedSignInResultOption);\n }\n async renderSignInButtonForNatitivePlatform(onResult, parentElem, gsiButtonConfiguration) {\n const androidOrIosButtonElem = createSignInButtonElement(gsiButtonConfiguration);\n this.addOnClickHandlerToExistingButtonForNatitivePlatform(androidOrIosButtonElem, onResult);\n parentElem.appendChild(androidOrIosButtonElem);\n }\n addOnClickHandlerToExistingButtonForNatitivePlatform(androidOrIosButtonElem, onResult) {\n const onClickAction = () => {\n void this.withHandleError(onResult, async () => {\n const notEnrichedSuccessSignInResultOption = await GoogleOneTapAuthPlatform.signInWithGoogleButtonFlowForNativePlatform();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSuccessSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n onResult(enrichedSignInResultOption);\n });\n };\n androidOrIosButtonElem.onclick = onClickAction;\n }\n // deprecated\n async addSignInActionToExistingButton(buttonParentId, buttonId) {\n return new Promise(async (resolve, reject) => {\n try {\n const resolveOnSuccess = (value) => {\n if (value.isSuccess) {\n resolve(value.success);\n }\n else if (value.noSuccess.noSuccessReasonCode === 'configuration_error') {\n reject(`configuration_error ${value.noSuccess.noSuccessAdditionalInfo}`);\n }\n };\n await this.addSignInActionToExistingButtonWithCallback(buttonParentId, buttonId, resolveOnSuccess);\n }\n catch (e) {\n reject(e.toString());\n }\n });\n }\n async addSignInActionToExistingButtonWithCallback(buttonParentId, buttonId, onResult) {\n await this.withHandleError(onResult, async () => {\n await this.ensureInitialized();\n const parentElem = document.getElementById(buttonParentId);\n const buttonElem = document.getElementById(buttonId);\n assert(() => !!parentElem);\n assert(() => !!buttonElem);\n if (Capacitor.getPlatform() === 'web') {\n await this.addSignInActionToExistingButtonForWeb(parentElem, buttonElem, onResult);\n }\n else {\n this.addOnClickHandlerToExistingButtonForNatitivePlatform(buttonElem, onResult);\n }\n });\n }\n async addSignInActionToExistingButtonForWeb(buttonParentElem, buttonElem, onResult) {\n buttonParentElem.style.position = 'relative';\n buttonParentElem.style.overflow = 'hidden';\n // buttonParentElem!.style.border = '2px solid red'; // uncomment for debugging\n // The visible button width should be the same as the google button width.\n const { width: buttonElemWidth, height: buttonElemHeight } = await this.waitForElementOffsetWidthNotZero(buttonElem);\n assert(() => buttonElemWidth !== 0);\n assert(() => buttonElemHeight !== 0);\n // We can't set the height on the Google sign-in button, but scaling the parent element vertically has the same effect.\n const googleButtonHeight = 40;\n const scaleY = buttonElemHeight / googleButtonHeight;\n const invisibleGoogleButtonDiv = document.createElement('div');\n const invisibleGoogleButtonDivId = 'invisibleGoogleButtonDiv';\n invisibleGoogleButtonDiv.setAttribute('id', invisibleGoogleButtonDivId);\n invisibleGoogleButtonDiv.style.position = 'absolute';\n invisibleGoogleButtonDiv.style.top = '0px';\n invisibleGoogleButtonDiv.style.left = '0px';\n invisibleGoogleButtonDiv.style.width = `${buttonElemWidth}px`;\n invisibleGoogleButtonDiv.style.boxSizing = 'border-box';\n invisibleGoogleButtonDiv.style.opacity = '0.0001'; // change it for debugging\n invisibleGoogleButtonDiv.style.transformOrigin = 'top left';\n invisibleGoogleButtonDiv.style.transform = 'scale(1, ' + scaleY + ')';\n buttonElem.appendChild(invisibleGoogleButtonDiv);\n await this.renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, invisibleGoogleButtonDivId, {}, { type: 'standard', width: buttonElemWidth });\n }\n waitForElementOffsetWidthNotZero(element) {\n if (element.offsetWidth !== 0 && element.offsetHeight !== 0) {\n return Promise.resolve({ width: element.offsetWidth, height: element.offsetHeight });\n }\n return new Promise((resolve, reject) => {\n try {\n const resizeObserver = new ResizeObserver(() => {\n if (element.offsetWidth !== 0 && element.offsetHeight !== 0) {\n resolve({ width: element.offsetWidth, height: element.offsetHeight });\n }\n });\n resizeObserver.observe(element);\n }\n catch (e) {\n reject(e.toString());\n }\n });\n }\n getNonce() {\n assert(() => !!this.nonce, `The nonce is only set after ${() => this.initialize} was called.`);\n return this.nonce;\n }\n enrichOptionResultWithDecodedIdToken(signInResultOption) {\n if (signInResultOption.isSuccess === false) {\n return signInResultOption;\n }\n return Object.assign(Object.assign({}, signInResultOption), { success: this.enrichSuccessResultWithDecodedIdToken(signInResultOption.success) });\n }\n enrichSuccessResultWithDecodedIdToken(successSignInResult) {\n try {\n const decodedJwt = jwtDecode(successSignInResult.idToken);\n return Object.assign(Object.assign({}, successSignInResult), { decodedIdToken: decodedJwt, userId: decodedJwt.sub, email: decodedJwt.email });\n }\n catch (e) {\n throw new Error(`Failed to decode idToken: ${successSignInResult.idToken}. Error: ${e.message}`);\n }\n }\n // To run code and call onResult with a SignInResultOption with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\n async withHandleError(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n isSuccess: false,\n noSuccess: {\n noSuccessAdditionalInfo: e.toString(),\n }\n });\n }\n }\n}\nconst googleOneTapAuth = new GoogleSignIn();\nexport { googleOneTapAuth as GoogleOneTapAuth };\n//# sourceMappingURL=GoogleSignIn.js.map"],"names":["signIn","signOut","disconnect","cancel","WebPlugin","FedCMAuthClient.isFedCMSupported","GoogleIdentityServicesClient.initialize","GoogleIdentityServicesClient.renderSignInButton","GoogleIdentityServicesClient.disconnect","registerPlugin","Capacitor","jwtDecode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/SignInButtonElement.js","esm/helpers.js","esm/web/FedCMAuthClient.js","esm/web/GoogleIdentityServicesClient.js","esm/web/GoogleSignInWeb.js","esm/GoogleSignIn.js"],"sourcesContent":["export function createSignInButtonElement(gsiButtonConfiguration) {\n var _a;\n const localizedStrings = {\n en: { signin: 'Sign in', continue_with: 'Continue with Google', signin_with: 'Sign in with Google', signup_with: 'Sign up with Google' },\n ar: { signin: '\\u062a\\u0633\\u062c\\u064a\\u0644 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644', continue_with: '\\u0627\\u0644\\u0645\\u0648\\u0627\\u0635\\u0644\\u0629 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Google', signin_with: '\\u062a\\u0633\\u062c\\u064a\\u0644 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644 \\u0628\\u0627\\u0633\\u062a\\u062e\\u062f\\u0627\\u0645 Google', signup_with: '\\u0627\\u0644\\u0627\\u0634\\u062a\\u0631\\u0627\\u0643 \\u0645\\u0646 \\u062e\\u0644\\u0627\\u0644 Google' },\n sr: { signin: '\\u041f\\u0440\\u0438\\u0458\\u0430\\u0432\\u0438 \\u043c\\u0435', continue_with: '\\u041d\\u0430\\u0441\\u0442\\u0430\\u0432\\u0438\\u0442\\u0435 \\u0441\\u0430 Google-\\u043e\\u043c', signin_with: '\\u041f\\u0440\\u0438\\u0458\\u0430\\u0432\\u0438\\u0442\\u0435 \\u0441\\u0435 \\u043f\\u043e\\u043c\\u043e\\u045b\\u0443 Google-\\u0430', signup_with: '\\u0420\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0443\\u0458\\u0442\\u0435 \\u0441\\u0435 \\u043f\\u043e\\u043c\\u043e\\u045b\\u0443 Google-\\u0430' },\n nb: { signin: 'Logg p\\u00e5', continue_with: 'Fortsett med Google', signin_with: 'Logg p\\u00e5 med Google', signup_with: 'Registrer deg med Google' },\n pl: { signin: 'Zaloguj si\\u0119', continue_with: 'Kontynuuj przy u\\u017cyciu konta Google', signin_with: 'Zaloguj si\\u0119 przez Google', signup_with: 'Zarejestruj si\\u0119 przez Google' },\n vi: { signin: '\\u0110\\u0103ng nh\\u1eadp', continue_with: 'Ti\\u1ebfp t\\u1ee5c truy c\\u1eadp Google', signin_with: '\\u0110\\u0103ng nh\\u00e2\\u0323p b\\u0103\\u0300ng Google', signup_with: '\\u0110\\u0103ng k\\u00fd b\\u1eb1ng Google' },\n cs: { signin: 'P\\u0159ihl\\u00e1sit se', continue_with: 'Pokra\\u010dovat pomoc\\u00ed Googlu', signin_with: \"P\\u0159ihl\\u00e1sit se p\\u0159es Google\", signup_with: 'Registrace pomoc\\u00ed Googlu' },\n id: { signin: 'Login', continue_with: 'Lanjutkan dengan Google', signin_with: 'Login dengan Google', signup_with: 'Daftar dengan Google' },\n nl: { signin: 'Inloggen', continue_with: 'Doorgaan met Google', signin_with: 'Inloggen met Google', signup_with: 'Aanmelden bij Google' },\n gl: { signin: 'Iniciar sesi\\u00f3n', continue_with: 'Continuar con Google', signin_with: 'Iniciar sesi\\u00f3n con Google', signup_with: 'Iniciar sesi\\u00f3n con Google' },\n sv: { signin: 'Logga in', continue_with: 'Forts\\u00e4tt med Google', signin_with: 'Logga in med Google', signup_with: 'Registrera dig med Google' },\n lv: { signin: 'Pierakst\\u012b\\u0161an\\u0101s', continue_with: 'Turpin\\u0101t darbu ar Google', signin_with: 'Pierakstieties ar Google', signup_with: 'Re\\u0123istr\\u0113\\u0161an\\u0101s, izmantojot Google' },\n tr: { signin: 'Oturum a\\u00e7\\u0131n', continue_with: 'Google ile devam edin', signin_with: 'Google ile oturum a\\u00e7\\u0131n', signup_with: 'Google ile kaydolun' },\n it: { signin: 'Accedi', continue_with: 'Continua con Google', signin_with: 'Accedi con Google', signup_with: 'Registrati con Google' },\n sq: { signin: 'Identifikohu', continue_with: 'Vazhdo me Google', signin_with: 'Identifikohu me Google', signup_with: 'Regjistrohu me Google' },\n ro: { signin: 'Conecteaz\\u0103-te', continue_with: 'Continu\\u0103 cu Google', signin_with: 'Conecteaz\\u0103-te cu Google', signup_with: '\\u00censcrie-te cu Google' },\n de: { signin: 'Anmelden', continue_with: 'Weiter mit Google', signin_with: '\\u00dcber Google anmelden', signup_with: 'Mit Google anmelden' },\n ko: { signin: '\\ub85c\\uadf8\\uc778', continue_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\uacc4\\uc18d\\ud558\\uae30', signin_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\ub85c\\uadf8\\uc778', signup_with: 'Google \\uacc4\\uc815\\uc73c\\ub85c \\uac00\\uc785\\ud558\\uae30' },\n fr: { signin: 'Se connecter', continue_with: 'Continuer avec Google', signin_with: 'Se connecter avec Google', signup_with: \"S'inscrire avec Google\" },\n kmr: { signin: 'Oturum a\\u00e7\\u0131n', continue_with: 'Google ile devam edin', signin_with: 'Google ile oturum a\\u00e7\\u0131n', signup_with: 'Google ile kaydolun' },\n zh: { signin: '\\u767b\\u5f55', continue_with: '\\u901a\\u8fc7 Google \\u7ee7\\u7eed\\u64cd\\u4f5c', signin_with: \"\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u767b\\u5f55\", signup_with: '\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u6ce8\\u518c' },\n 'zh-CN': { signin: '\\u767b\\u5f55', continue_with: '\\u901a\\u8fc7 Google \\u7ee7\\u7eed\\u64cd\\u4f5c', signin_with: \"\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u767b\\u5f55\", signup_with: '\\u4f7f\\u7528 Google \\u5e10\\u53f7\\u6ce8\\u518c' },\n 'zh-HK': { signin: '\\u767b\\u5165', continue_with: '\\u7e7c\\u7e8c\\u900f\\u904e Google \\u5e33\\u6236\\u64cd\\u4f5c', signin_with: '\\u4f7f\\u7528 Google \\u5e33\\u6236\\u767b\\u5165', signup_with: '\\u4f7f\\u7528 Google \\u5e33\\u6236\\u8a3b\\u518a' },\n pt: { signin: 'Fazer login', continue_with: 'Continuar com o Google', signin_with: 'Fazer login com o Google', signup_with: 'Inscrever-se no Google' },\n es: { signin: 'Iniciar sesi\\u00f3n', continue_with: 'Continuar con Google', signin_with: 'Iniciar sesi\\u00f3n con Google', signup_with: 'Registrarse con Google' },\n };\n const locale = gsiButtonConfiguration === null || gsiButtonConfiguration === void 0 ? void 0 : gsiButtonConfiguration.locale;\n let localeTexts = locale && localizedStrings[locale];\n if (!localeTexts && locale) {\n const [language] = locale.split('-');\n localeTexts = localizedStrings[language] || localizedStrings['en'];\n }\n else if (!localeTexts) {\n localeTexts = localizedStrings['en'];\n }\n const text = (_a = gsiButtonConfiguration === null || gsiButtonConfiguration === void 0 ? void 0 : gsiButtonConfiguration.text) !== null && _a !== void 0 ? _a : 'signin_with';\n const buttonText = localeTexts[text];\n // HTML from https://github.com/inouiw/ReactSignInWithGoogleButton\n const button = document.createElement('button');\n button.setAttribute(\"style\", \"border-radius: 4px; background-color: rgb(255, 255, 255); border: 1px solid rgb(218, 220, 224); color: rgb(60, 64, 67); cursor: pointer; font-family: Roboto, Verdana; font-weight: 500; font-size: 14px; height: 40px; letter-spacing: 0.25px; padding: 0px 12px; position: relative; text-align: center; vertical-align: middle; width: auto;\");\n button.setAttribute('aria-label', buttonText);\n button.innerHTML = `\n <div style=\"display: flex; align-items: center; flex-flow: row nowrap; justify-content: space-between; height: 100%; position: relative; width: 100%;\">\n <div style=\"height: 18px; margin-right: 8px; min-width: 18px; width: 18px;\">\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"18px\" height=\"18px\" viewBox=\"0 0 48 48\">\n <g>\n <path fill=\"#EA4335\" d=\"M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z\"></path>\n <path fill=\"#4285F4\" d=\"M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z\"></path>\n <path fill=\"#FBBC05\" d=\"M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z\"></path>\n <path fill=\"#34A853\" d=\"M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z\"></path>\n <path fill=\"none\" d=\"M0 0h48v48H0z\"></path>\n </g>\n </svg>\n </div>\n <p>${buttonText}</p>\n </div>`;\n return button;\n}\n//# sourceMappingURL=SignInButtonElement.js.map","export function assert(predicate, customMessage) {\n if (!predicate()) {\n const callerName = callingFunctionName();\n if (customMessage != undefined) {\n throw Error(customMessage + `. Error in ${callerName}.`);\n }\n throw Error(`Assert error, expected '${predicate}' to be true. Error in ${callerName}.`);\n }\n}\nexport function randomHexString(length) {\n let uint8RandomNumbers = new Uint8Array((length / 2) + 1);\n uint8RandomNumbers = crypto.getRandomValues(uint8RandomNumbers);\n const numbersAsHexString = Array.from(uint8RandomNumbers).map(x => x.toString(16)).join('');\n return numbersAsHexString.substring(0, length);\n}\nfunction callingFunctionName() {\n var _a;\n try {\n return (_a = (new Error()).stack) === null || _a === void 0 ? void 0 : _a.split(\"\\n\")[3].trim().split(\" \")[1];\n }\n catch (_b) {\n // ignore.\n }\n}\nexport function loadScript(url) {\n return new Promise((resolve, reject) => {\n const scriptEl = document.createElement('script');\n scriptEl.async = true;\n scriptEl.onerror = () => reject();\n scriptEl.onload = () => resolve();\n scriptEl.src = url;\n document.getElementsByTagName('head')[0].appendChild(scriptEl);\n });\n}\nexport function toSignInResultOption(signInResult) {\n if (signInResult.idToken) {\n return {\n isSuccess: true,\n success: signInResult\n };\n }\n else {\n return {\n isSuccess: false,\n noSuccess: signInResult\n };\n }\n}\nexport function toNotEnrichedSignInResultOption(signInResult) {\n if (signInResult.idToken) {\n return {\n isSuccess: true,\n success: signInResult\n };\n }\n else {\n return {\n isSuccess: false,\n noSuccess: signInResult\n };\n }\n}\n//# sourceMappingURL=helpers.js.map","// The Federated Credential Management (FedCM) browser API is a new privacy-preserving alternative to third-party cookies for federated identity providers like google.\nlet fedCMAbortController = undefined;\nconst cancelCalledAbortReason = 'CANCEL_CALLED';\nexport function isFedCMSupported() {\n return typeof (window) !== 'undefined' && 'IdentityCredential' in window;\n}\nexport async function signIn(autoSelect, clientId, nonce) {\n var _a, _b;\n try {\n // console.log(`IdentityCredential supported: ${isFedCMSupported()}`);\n fedCMAbortController = new AbortController();\n // see https://developers.google.com/privacy-sandbox/3pcd/fedcm\n // see https://developers.google.com/privacy-sandbox/blog/fedcm-auto-reauthn\n const identityCredential = await navigator.credentials.get({\n identity: {\n context: 'signin',\n providers: [\n {\n configURL: 'https://accounts.google.com/gsi/fedcm.json',\n clientId: clientId,\n // loginHint: ''\n nonce: nonce,\n fields: ['name', 'email', 'picture'],\n // Google builds the continuation popup URL from these params. Without them, the popup fails with\n // \"Required parameter is missing: response_type\". Same values as the google gsi/client library sends.\n params: {\n response_type: 'id_token',\n scope: 'email profile openid',\n ss_domain: location.origin,\n nonce: nonce !== null && nonce !== void 0 ? nonce : 'not_provided'\n }\n }\n ]\n },\n mediation: autoSelect ? 'optional' : 'required',\n signal: fedCMAbortController.signal\n });\n if (!(identityCredential === null || identityCredential === void 0 ? void 0 : identityCredential.token)) {\n return {};\n }\n return {\n idToken: identityCredential.token,\n isAutoSelected: identityCredential.isAutoSelected\n };\n }\n catch (e) {\n // NotSupportedError DOMException\n // IdentityCredentialError DOMException\n // NetworkError DOMException --> name: 'NetworkError'\n // NotAllowedError DOMException\n const name = (_a = e.name) !== null && _a !== void 0 ? _a : '';\n const message = (_b = e.message) !== null && _b !== void 0 ? _b : '';\n // console.log('fedCMSignIn error: ', e, name);\n if (message.includes(cancelCalledAbortReason)\n || (name === 'NetworkError' && message.includes('Error retrieving a token.'))) {\n return {\n noSuccessReasonCode: 'SIGN_IN_CANCELLED'\n };\n }\n return {};\n }\n finally {\n fedCMAbortController = undefined;\n }\n}\nexport function signOut(_authenticatedUserId) {\n navigator.credentials.preventSilentAccess();\n return Promise.resolve({ isSuccess: true });\n}\nexport function disconnect(_authenticatedUserId) {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\nexport function cancel() {\n fedCMAbortController === null || fedCMAbortController === void 0 ? void 0 : fedCMAbortController.abort({ message: cancelCalledAbortReason });\n}\n//# sourceMappingURL=FedCMAuthClient.js.map","/// <reference types=\"gapi\" />\n/// <reference types=\"google.accounts\" />\nimport { assert, loadScript } from '../helpers';\nconst gsiScriptUrl = 'https://accounts.google.com/gsi/client';\nlet gapiLoadedPromise = undefined;\nexport function initialize() {\n if (gapiLoadedPromise === undefined) {\n gapiLoadedPromise = loadScript(gsiScriptUrl);\n }\n return gapiLoadedPromise;\n}\nfunction oneTapInitialize(autoSelect, clientId, nonce, resolveSignInFunc, buttonWebOptions) {\n // The documenation says: \"If you do call the google.accounts.id.initialize method multiple times, only the configurations in the last call is remembered and used.\".\n // So it is safe to call initialize multiple times.\n google.accounts.id.initialize({\n client_id: clientId,\n callback: (credentialResponse) => handleCredentialResponse(credentialResponse, resolveSignInFunc),\n auto_select: autoSelect,\n // see https://developers.google.com/identity/gsi/web/guides/itp\n itp_support: true,\n cancel_on_tap_outside: false, // same as for browser FedCM API.\n ux_mode: (buttonWebOptions === null || buttonWebOptions === void 0 ? void 0 : buttonWebOptions.uxMode) || 'popup',\n nonce: nonce,\n use_fedcm_for_prompt: true,\n use_fedcm_for_button: true,\n // log_level: 'debug'\n });\n}\nexport async function signIn(autoSelect, clientId, nonce) {\n return new Promise(async (resolve, _reject) => {\n await withHandleError(resolve, async () => {\n // The resolve function is passed, so it can be called in handleCredentialResponse.\n oneTapInitialize(autoSelect, clientId, nonce, resolve);\n // Display the One Tap prompt or the browser native credential manager.\n google.accounts.id.prompt((notification) => {\n const configurationErrors = ['missing_client_id', 'unregistered_origin'];\n const momentReason = getMomentReason(notification);\n if (momentReason !== undefined && configurationErrors.includes(momentReason)) {\n resolve({\n noSuccessReasonCode: 'configuration_error',\n noSuccessAdditionalInfo: momentReason\n });\n }\n else if (momentReason === 'credential_returned') {\n // Do nothing, handled in handleCredentialResponse.\n }\n else if (notification.isSkippedMoment()\n || notification.isDismissedMoment()) {\n resolve({\n noSuccessReasonCode: momentReason\n });\n }\n else {\n // Do nothing, may be display moment indicating that the prompt is displayed.\n }\n });\n });\n });\n}\nfunction getMomentReason(notification) {\n if (notification.isSkippedMoment()) {\n return 'SIGN_IN_CANCELLED';\n }\n if (notification.isDismissedMoment()) {\n const dismissedReason = notification.getDismissedReason(); // \"credential_returned\" | \"cancel_called\" | \"flow_restarted\"\n if (dismissedReason === 'cancel_called') {\n return 'SIGN_IN_CANCELLED';\n }\n return dismissedReason;\n }\n return 'UNKNOWN';\n}\nexport async function renderSignInButton(clientId, nonce, parentElementId, options, gsiButtonConfiguration) {\n const parentElem = document.getElementById(parentElementId);\n assert(() => !!parentElem);\n const signInPromise = new Promise(async (resolve) => {\n await withHandleError(resolve, async () => {\n oneTapInitialize(false, clientId, nonce, resolve, options.webOptions);\n // // Adding a click_listener allows to detect when the popup is opened.\n // (gsiButtonConfiguration as any).click_listener = () => {\n // console.log('click_listener');\n // };\n google.accounts.id.renderButton(parentElem, gsiButtonConfiguration);\n });\n });\n return signInPromise;\n}\nfunction handleCredentialResponse(credentialResponse, resolveSignInFunc) {\n const signInResult = {\n idToken: credentialResponse.credential,\n isAutoSelected: credentialResponse.select_by === 'auto',\n };\n resolveSignInFunc(signInResult);\n}\nexport function cancel() {\n google.accounts.id.cancel();\n}\nexport function signOut(_authenticatedUserId) {\n google.accounts.id.disableAutoSelect();\n return Promise.resolve({ isSuccess: true });\n}\nexport function disconnect(authenticatedUserId) {\n return new Promise(async (resolve) => {\n await withHandleErrorDisconnect(resolve, async () => {\n if (authenticatedUserId) {\n // Calling revoke method revokes all OAuth2 scopes previously granted by the Sign In With Google client library.\n google.accounts.id.revoke(authenticatedUserId, response => {\n if (response.successful) {\n resolve({ isSuccess: true });\n }\n else {\n resolve({ isSuccess: false, error: response.error });\n }\n });\n }\n else {\n resolve({ isSuccess: true });\n }\n });\n });\n}\n// To run code and call onResult with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\nasync function withHandleError(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n noSuccessAdditionalInfo: e.toString(),\n });\n }\n}\n// To run code and call onResult with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\nasync function withHandleErrorDisconnect(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n isSuccess: false,\n error: e.toString(),\n });\n }\n}\n//# sourceMappingURL=GoogleIdentityServicesClient.js.map","import { WebPlugin } from '@capacitor/core';\nimport { toNotEnrichedSignInResultOption } from '../helpers';\nimport * as FedCMAuthClient from './FedCMAuthClient';\nimport * as GoogleIdentityServicesClient from './GoogleIdentityServicesClient';\n/**\n * Web platform specific implementation of the Google One Tap Auth plugin.\n * Called from @see {@link GoogleSignIn}\n */\nexport class GoogleOneTapAuthWeb extends WebPlugin {\n async initialize(options) {\n this.initializeOptions = options;\n this.authClient = FedCMAuthClient.isFedCMSupported() ? FedCMAuthClient : GoogleIdentityServicesClient;\n await GoogleIdentityServicesClient.initialize();\n }\n async tryAutoOrOneTapSignIn() {\n let signInResult = await this.authClient.signIn(true, this.initializeOptions.clientId, this.initializeOptions.nonce);\n if (!signInResult.idToken\n // If the popup was cancelled, do not show it again.\n && signInResult.noSuccessReasonCode !== 'SIGN_IN_CANCELLED') {\n signInResult = await this.authClient.signIn(false, this.initializeOptions.clientId, this.initializeOptions.nonce);\n }\n return toNotEnrichedSignInResultOption(signInResult);\n }\n async tryOneTapSignIn() {\n const signInResult = await this.authClient.signIn(false, this.initializeOptions.clientId, this.initializeOptions.nonce);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n async tryAutoSignIn() {\n const signInResult = await this.authClient.signIn(true, this.initializeOptions.clientId, this.initializeOptions.nonce);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n signInWithGoogleButtonFlowForNativePlatform() {\n return Promise.reject('signInWithGoogleButtonFlowForNativePlatform: For the web platform, the sign-in with Google button flow cannot be triggered by an API call but only by pressing a button.');\n }\n async renderSignInButton(parentElementId, options, gsiButtonConfiguration) {\n const signInResult = await GoogleIdentityServicesClient.renderSignInButton(this.initializeOptions.clientId, this.initializeOptions.nonce, parentElementId, options, gsiButtonConfiguration);\n return toNotEnrichedSignInResultOption(signInResult);\n }\n cancelOneTapDialog() {\n this.authClient.cancel();\n }\n signOut(authenticatedUserId) {\n return this.authClient.signOut(authenticatedUserId);\n }\n disconnect(authenticatedUserId) {\n return GoogleIdentityServicesClient.disconnect(authenticatedUserId);\n }\n}\n//# sourceMappingURL=GoogleSignInWeb.js.map","import { Capacitor, registerPlugin } from '@capacitor/core';\nimport { jwtDecode } from \"jwt-decode\";\nimport { createSignInButtonElement } from './SignInButtonElement';\nimport { assert, randomHexString } from './helpers';\nimport { GoogleOneTapAuthWeb } from './web/GoogleSignInWeb';\nconst GoogleOneTapAuthPlatform = registerPlugin('GoogleOneTapAuth', {\n web: () => new GoogleOneTapAuthWeb(),\n});\nvar InitializeStatus;\n(function (InitializeStatus) {\n InitializeStatus[InitializeStatus[\"NotInitialized\"] = 0] = \"NotInitialized\";\n InitializeStatus[InitializeStatus[\"Initializing\"] = 1] = \"Initializing\";\n InitializeStatus[InitializeStatus[\"Initialized\"] = 2] = \"Initialized\";\n})(InitializeStatus || (InitializeStatus = {}));\n/*\n * This file is the entry point for all plugin methods. It contains common logic to web, android, iOS or delegates to the specific implementation.\n */\nclass GoogleSignIn {\n constructor() {\n this.initializeStatus = InitializeStatus.NotInitialized;\n this.authenticatedUserId = undefined;\n this.isInitializedPromise = new Promise((resolve, reject) => {\n this.resolveIsInitializedPromise = resolve;\n this.rejectIsInitializedPromise = reject;\n });\n }\n /// Performs common or one-time initialization. Can be called multiple times.\n initialize(options) {\n try {\n if (this.initializeStatus === InitializeStatus.NotInitialized) {\n this.initializeStatus = InitializeStatus.Initializing;\n if (!options.clientId || options.clientId.endsWith(\"apps.googleusercontent.com\") == false) {\n throw new Error(\"clientId must end with 'apps.googleusercontent.com' but is: \" + options.clientId);\n }\n this.nonce = options.nonce = options.nonce || randomHexString(10);\n GoogleOneTapAuthPlatform.initialize(options).then(() => {\n this.initializeStatus = InitializeStatus.Initialized;\n this.resolveIsInitializedPromise();\n }).catch((e) => {\n this.initializeStatus = InitializeStatus.NotInitialized;\n this.rejectIsInitializedPromise(e);\n });\n }\n }\n catch (e) {\n this.rejectIsInitializedPromise(e.message);\n }\n return this.isInitializedPromise;\n }\n async ensureInitialized() {\n assert(() => this.initializeStatus !== InitializeStatus.NotInitialized, 'Must call initialize first.');\n if (this.initializeStatus === InitializeStatus.Initializing) {\n await this.isInitializedPromise;\n }\n }\n async tryAutoOrOneTapSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryAutoOrOneTapSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async tryAutoOrOneTapSignInWithCallback(onResult) {\n const signInResultOption = await this.tryAutoOrOneTapSignIn();\n onResult(signInResultOption);\n }\n async tryAutoSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryAutoSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async tryOneTapSignIn() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.tryOneTapSignIn();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n async signInWithGoogleButtonFlowForNativePlatform() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n await this.ensureInitialized();\n const notEnrichedSuccessSignInResultOption = await GoogleOneTapAuthPlatform.signInWithGoogleButtonFlowForNativePlatform();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSuccessSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n resolve(enrichedSignInResultOption);\n });\n });\n }\n onResultReceived(signInResultOption) {\n if (signInResultOption.isSuccess) {\n this.authenticatedUserId = signInResultOption.success.userId;\n }\n }\n cancelOneTapDialog() {\n GoogleOneTapAuthPlatform.cancelOneTapDialog();\n }\n async signOut() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n const result = await GoogleOneTapAuthPlatform.signOut(this.authenticatedUserId);\n this.authenticatedUserId = undefined;\n resolve(result);\n });\n });\n }\n async disconnect() {\n return new Promise(async (resolve) => {\n await this.withHandleError(resolve, async () => {\n const result = await GoogleOneTapAuthPlatform.disconnect(this.authenticatedUserId);\n this.authenticatedUserId = undefined;\n resolve(result);\n });\n });\n }\n // deprecated\n async renderSignInButton(parentElementId, options, gsiButtonConfiguration) {\n return new Promise(async (resolve, reject) => {\n const resolveOnSuccess = (value) => {\n if (value.isSuccess) {\n resolve(value.success);\n }\n else if (value.noSuccess.noSuccessReasonCode === 'configuration_error') {\n reject(`configuration_error ${value.noSuccess.noSuccessAdditionalInfo}`);\n }\n };\n await this.renderSignInButtonWithCallback(parentElementId, options, gsiButtonConfiguration, resolveOnSuccess);\n });\n }\n async renderSignInButtonWithCallback(parentElementId, options, gsiButtonConfiguration, onResult) {\n await this.withHandleError(onResult, async () => {\n await this.ensureInitialized();\n const parentElem = document.getElementById(parentElementId);\n assert(() => !!parentElem);\n options.webOptions = options.webOptions || {};\n if (Capacitor.getPlatform() === 'web') {\n await this.renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, parentElementId, options, gsiButtonConfiguration);\n }\n else {\n await this.renderSignInButtonForNatitivePlatform(onResult, parentElem, gsiButtonConfiguration);\n }\n });\n }\n async renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, invisibleGoogleButtonDivId, options, gsiButtonConfiguration) {\n const notEnrichedSignInResultOption = await GoogleOneTapAuthPlatform.renderSignInButton(invisibleGoogleButtonDivId, options, gsiButtonConfiguration);\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n onResult(enrichedSignInResultOption);\n }\n async renderSignInButtonForNatitivePlatform(onResult, parentElem, gsiButtonConfiguration) {\n const androidOrIosButtonElem = createSignInButtonElement(gsiButtonConfiguration);\n this.addOnClickHandlerToExistingButtonForNatitivePlatform(androidOrIosButtonElem, onResult);\n parentElem.appendChild(androidOrIosButtonElem);\n }\n addOnClickHandlerToExistingButtonForNatitivePlatform(androidOrIosButtonElem, onResult) {\n const onClickAction = () => {\n void this.withHandleError(onResult, async () => {\n const notEnrichedSuccessSignInResultOption = await GoogleOneTapAuthPlatform.signInWithGoogleButtonFlowForNativePlatform();\n const enrichedSignInResultOption = this.enrichOptionResultWithDecodedIdToken(notEnrichedSuccessSignInResultOption);\n this.onResultReceived(enrichedSignInResultOption);\n onResult(enrichedSignInResultOption);\n });\n };\n androidOrIosButtonElem.onclick = onClickAction;\n }\n // deprecated\n async addSignInActionToExistingButton(buttonParentId, buttonId) {\n return new Promise(async (resolve, reject) => {\n try {\n const resolveOnSuccess = (value) => {\n if (value.isSuccess) {\n resolve(value.success);\n }\n else if (value.noSuccess.noSuccessReasonCode === 'configuration_error') {\n reject(`configuration_error ${value.noSuccess.noSuccessAdditionalInfo}`);\n }\n };\n await this.addSignInActionToExistingButtonWithCallback(buttonParentId, buttonId, resolveOnSuccess);\n }\n catch (e) {\n reject(e.toString());\n }\n });\n }\n async addSignInActionToExistingButtonWithCallback(buttonParentId, buttonId, onResult) {\n await this.withHandleError(onResult, async () => {\n await this.ensureInitialized();\n const parentElem = document.getElementById(buttonParentId);\n const buttonElem = document.getElementById(buttonId);\n assert(() => !!parentElem);\n assert(() => !!buttonElem);\n if (Capacitor.getPlatform() === 'web') {\n await this.addSignInActionToExistingButtonForWeb(parentElem, buttonElem, onResult);\n }\n else {\n this.addOnClickHandlerToExistingButtonForNatitivePlatform(buttonElem, onResult);\n }\n });\n }\n async addSignInActionToExistingButtonForWeb(buttonParentElem, buttonElem, onResult) {\n buttonParentElem.style.position = 'relative';\n buttonParentElem.style.overflow = 'hidden';\n // buttonParentElem!.style.border = '2px solid red'; // uncomment for debugging\n // The visible button width should be the same as the google button width.\n const { width: buttonElemWidth, height: buttonElemHeight } = await this.waitForElementOffsetWidthNotZero(buttonElem);\n assert(() => buttonElemWidth !== 0);\n assert(() => buttonElemHeight !== 0);\n // We can't set the height on the Google sign-in button, but scaling the parent element vertically has the same effect.\n const googleButtonHeight = 40;\n const scaleY = buttonElemHeight / googleButtonHeight;\n const invisibleGoogleButtonDiv = document.createElement('div');\n const invisibleGoogleButtonDivId = 'invisibleGoogleButtonDiv';\n invisibleGoogleButtonDiv.setAttribute('id', invisibleGoogleButtonDivId);\n invisibleGoogleButtonDiv.style.position = 'absolute';\n invisibleGoogleButtonDiv.style.top = '0px';\n invisibleGoogleButtonDiv.style.left = '0px';\n invisibleGoogleButtonDiv.style.width = `${buttonElemWidth}px`;\n invisibleGoogleButtonDiv.style.boxSizing = 'border-box';\n invisibleGoogleButtonDiv.style.opacity = '0.0001'; // change it for debugging\n invisibleGoogleButtonDiv.style.transformOrigin = 'top left';\n invisibleGoogleButtonDiv.style.transform = 'scale(1, ' + scaleY + ')';\n buttonElem.appendChild(invisibleGoogleButtonDiv);\n await this.renderSignInButtonUsingGoogleIdentityServicesForWeb(onResult, invisibleGoogleButtonDivId, {}, { type: 'standard', width: buttonElemWidth });\n }\n waitForElementOffsetWidthNotZero(element) {\n if (element.offsetWidth !== 0 && element.offsetHeight !== 0) {\n return Promise.resolve({ width: element.offsetWidth, height: element.offsetHeight });\n }\n return new Promise((resolve, reject) => {\n try {\n const resizeObserver = new ResizeObserver(() => {\n if (element.offsetWidth !== 0 && element.offsetHeight !== 0) {\n resolve({ width: element.offsetWidth, height: element.offsetHeight });\n }\n });\n resizeObserver.observe(element);\n }\n catch (e) {\n reject(e.toString());\n }\n });\n }\n getNonce() {\n assert(() => !!this.nonce, `The nonce is only set after ${() => this.initialize} was called.`);\n return this.nonce;\n }\n enrichOptionResultWithDecodedIdToken(signInResultOption) {\n if (signInResultOption.isSuccess === false) {\n return signInResultOption;\n }\n return Object.assign(Object.assign({}, signInResultOption), { success: this.enrichSuccessResultWithDecodedIdToken(signInResultOption.success) });\n }\n enrichSuccessResultWithDecodedIdToken(successSignInResult) {\n try {\n const decodedJwt = jwtDecode(successSignInResult.idToken);\n return Object.assign(Object.assign({}, successSignInResult), { decodedIdToken: decodedJwt, userId: decodedJwt.sub, email: decodedJwt.email });\n }\n catch (e) {\n throw new Error(`Failed to decode idToken: ${successSignInResult.idToken}. Error: ${e.message}`);\n }\n }\n // To run code and call onResult with a SignInResultOption with NoSuccessSignInResult in case of error. Uses an existing onResult callback that the caller must provide.\n async withHandleError(onResult, fn) {\n try {\n await fn();\n }\n catch (e) {\n onResult({\n isSuccess: false,\n noSuccess: {\n noSuccessAdditionalInfo: e.toString(),\n }\n });\n }\n }\n}\nconst googleOneTapAuth = new GoogleSignIn();\nexport { googleOneTapAuth as GoogleOneTapAuth };\n//# sourceMappingURL=GoogleSignIn.js.map"],"names":["signIn","signOut","disconnect","cancel","WebPlugin","FedCMAuthClient.isFedCMSupported","GoogleIdentityServicesClient.initialize","GoogleIdentityServicesClient.renderSignInButton","GoogleIdentityServicesClient.disconnect","registerPlugin","Capacitor","jwtDecode"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "capacitor-native-google-one-tap-signin",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.4",
|
|
4
4
|
"description": "Google One Tap sign-in plugin for capacitor.",
|
|
5
5
|
"main": "dist/plugin.cjs.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"web"
|
|
32
32
|
],
|
|
33
33
|
"scripts": {
|
|
34
|
-
"test": "npm run test:ios && npm run test:android && npm run verify:web
|
|
34
|
+
"test": "npm run test:ios && npm run test:android && npm run verify:web && npm run test:web",
|
|
35
35
|
"test:ios": "(cd ios && pod install && xcodebuild -workspace Plugin.xcworkspace -scheme Plugin -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=18.4' test)",
|
|
36
36
|
"test:android": "(cd android && ./gradlew build connectedAndroidTest --info)",
|
|
37
37
|
"test:web": "vitest",
|
|
@@ -49,27 +49,27 @@
|
|
|
49
49
|
"prepublishOnly": "npm run build"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@capacitor/android": "^7.
|
|
53
|
-
"@capacitor/cli": "^7.
|
|
54
|
-
"@capacitor/core": "^7.
|
|
55
|
-
"@capacitor/docgen": "^0.3.
|
|
56
|
-
"@capacitor/ios": "^7.
|
|
52
|
+
"@capacitor/android": "^7.6.10",
|
|
53
|
+
"@capacitor/cli": "^7.6.10",
|
|
54
|
+
"@capacitor/core": "^7.6.10",
|
|
55
|
+
"@capacitor/docgen": "^0.3.1",
|
|
56
|
+
"@capacitor/ios": "^7.6.10",
|
|
57
57
|
"@ionic/eslint-config": "^0.4.0",
|
|
58
58
|
"@ionic/prettier-config": "^4.0.0",
|
|
59
59
|
"@ionic/swiftlint-config": "^2.0.0",
|
|
60
60
|
"@types/gapi": "^0.0.47",
|
|
61
|
-
"@types/google.accounts": "^0.0.
|
|
62
|
-
"eslint": "^8.57.
|
|
63
|
-
"prettier": "^3.
|
|
64
|
-
"prettier-plugin-java": "^2.
|
|
65
|
-
"rimraf": "^6.
|
|
66
|
-
"rollup": "^4.
|
|
61
|
+
"@types/google.accounts": "^0.0.18",
|
|
62
|
+
"eslint": "^8.57.1",
|
|
63
|
+
"prettier": "^3.9.10",
|
|
64
|
+
"prettier-plugin-java": "^2.11.0",
|
|
65
|
+
"rimraf": "^6.1.3",
|
|
66
|
+
"rollup": "^4.67.2",
|
|
67
67
|
"swiftlint": "^2.0.0",
|
|
68
|
-
"typescript": "^5.
|
|
69
|
-
"vitest": "^3.
|
|
68
|
+
"typescript": "^5.9.3",
|
|
69
|
+
"vitest": "^3.2.7"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
|
-
"@capacitor/core": "
|
|
72
|
+
"@capacitor/core": "^7.0.0"
|
|
73
73
|
},
|
|
74
74
|
"prettier": "@ionic/prettier-config",
|
|
75
75
|
"swiftlint": "@ionic/swiftlint-config",
|