Skip to content

Instantly share code, notes, and snippets.

@EKoetsjarjan
Created February 27, 2024 10:01
Show Gist options
  • Save EKoetsjarjan/1a4457c763e240f1324bf4ff60d5391a to your computer and use it in GitHub Desktop.
Save EKoetsjarjan/1a4457c763e240f1324bf4ff60d5391a to your computer and use it in GitHub Desktop.
expo-firebase-recaptcha+2.3.1.patch
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.d.ts b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.d.ts
index ecf5441..a1f04d9 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.d.ts
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.d.ts
@@ -1,6 +1,6 @@
-import { FirebaseOptions } from 'expo-firebase-core';
-import * as React from 'react';
-import { WebView } from './WebView';
+import * as React from "react";
+import { FirebaseOptions } from "./FirebaseRecaptcha.types";
+import { WebView } from "./WebView";
interface Props extends React.ComponentProps<typeof WebView> {
firebaseConfig?: FirebaseOptions;
firebaseVersion?: string;
@@ -13,7 +13,7 @@ interface Props extends React.ComponentProps<typeof WebView> {
invisible?: boolean;
verify?: boolean;
}
-declare function FirebaseRecaptcha(props: Props): JSX.Element | null;
+declare function FirebaseRecaptcha(props: Props): React.JSX.Element | null;
declare namespace FirebaseRecaptcha {
var defaultProps: {
firebaseConfig: void | FirebaseOptions;
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.d.ts.map b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.d.ts.map
index 9c370ff..8c03458 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.d.ts.map
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"FirebaseRecaptcha.d.ts","sourceRoot":"","sources":["../src/FirebaseRecaptcha.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2B,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE9E,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,UAAU,KAAM,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC;IAC1D,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA8HD,iBAAwB,iBAAiB,CAAC,KAAK,EAAE,KAAK,sBA6ErD;kBA7EuB,iBAAiB;;;;;eAAjB,iBAAiB"}
\ No newline at end of file
+{"version":3,"file":"FirebaseRecaptcha.d.ts","sourceRoot":"","sources":["../src/FirebaseRecaptcha.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,UAAU,KAAM,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC;IAC1D,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AA8HD,iBAAwB,iBAAiB,CAAC,KAAK,EAAE,KAAK,4BA6ErD;kBA7EuB,iBAAiB;;;;;eAAjB,iBAAiB"}
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.js b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.js
index 81dd5b1..dc15e1d 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.js
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.js
@@ -1,7 +1,14 @@
-import { DEFAULT_WEB_APP_OPTIONS } from 'expo-firebase-core';
-import { CodedError } from 'expo-modules-core';
-import * as React from 'react';
-import { WebView } from './WebView';
+import Constants from "expo-constants";
+import { CodedError } from "expo-modules-core";
+import * as React from "react";
+import { WebView } from "./WebView";
+function getDefaultWebOptions() {
+ return Constants.expoConfig?.web?.config?.firebase;
+}
+/**
+ * The default Firebase options as defined in `web.config.firebase` in `app.json`.
+ */
+const DEFAULT_WEB_APP_OPTIONS = getDefaultWebOptions();
function getWebviewSource(firebaseConfig, firebaseVersion, appVerificationDisabledForTesting = false, languageCode, invisible) {
firebaseVersion = firebaseVersion || '8.0.0';
return {
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.js.map b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.js.map
index 3eca25a..abccb5c 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.js.map
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.js.map
@@ -1 +1 @@
-{"version":3,"file":"FirebaseRecaptcha.js","sourceRoot":"","sources":["../src/FirebaseRecaptcha.tsx"],"names":[],"mappings":"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","sourcesContent":["import { DEFAULT_WEB_APP_OPTIONS, FirebaseOptions } from 'expo-firebase-core';\nimport { CodedError } from 'expo-modules-core';\nimport * as React from 'react';\n\nimport { WebView } from './WebView';\n\ninterface Props extends React.ComponentProps<typeof WebView> {\n firebaseConfig?: FirebaseOptions;\n firebaseVersion?: string;\n appVerificationDisabledForTesting?: boolean;\n languageCode?: string;\n onLoad?: () => any;\n onError?: () => any;\n onVerify: (token: string) => any;\n onFullChallenge?: () => any;\n invisible?: boolean;\n verify?: boolean;\n}\n\nfunction getWebviewSource(\n firebaseConfig: FirebaseOptions,\n firebaseVersion?: string,\n appVerificationDisabledForTesting: boolean = false,\n languageCode?: string,\n invisible?: boolean\n) {\n firebaseVersion = firebaseVersion || '8.0.0';\n return {\n baseUrl: `https://${firebaseConfig.authDomain}`,\n html: `\n<!DOCTYPE html><html>\n<head>\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n <meta name=\"HandheldFriendly\" content=\"true\">\n <script src=\"https://www.gstatic.com/firebasejs/${firebaseVersion}/firebase-app.js\"></script>\n <script src=\"https://www.gstatic.com/firebasejs/${firebaseVersion}/firebase-auth.js\"></script>\n <script type=\"text/javascript\">firebase.initializeApp(${JSON.stringify(firebaseConfig)});</script>\n <style>\n html, body {\n height: 100%;\n ${invisible ? `padding: 0; margin: 0;` : ``}\n }\n #recaptcha-btn {\n width: 100%;\n height: 100%;\n padding: 0;\n margin: 0;\n border: 0;\n user-select: none;\n -webkit-user-select: none;\n }\n </style>\n</head>\n<body>\n ${\n invisible\n ? `<button id=\"recaptcha-btn\" type=\"button\" onclick=\"onClickButton()\">Confirm reCAPTCHA</button>`\n : `<div id=\"recaptcha-cont\" class=\"g-recaptcha\"></div>`\n }\n <script>\n var fullChallengeTimer;\n function onVerify(token) {\n if (fullChallengeTimer) {\n clearInterval(fullChallengeTimer);\n fullChallengeTimer = undefined;\n }\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'verify',\n token: token\n }));\n }\n function onLoad() {\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'load'\n }));\n firebase.auth().settings.appVerificationDisabledForTesting = ${appVerificationDisabledForTesting};\n ${languageCode ? `firebase.auth().languageCode = '${languageCode}';` : ''}\n window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier(\"${\n invisible ? 'recaptcha-btn' : 'recaptcha-cont'\n }\", {\n size: \"${invisible ? 'invisible' : 'normal'}\",\n callback: onVerify\n });\n window.recaptchaVerifier.render();\n }\n function onError() {\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'error'\n }));\n }\n function onClickButton() {\n if (!fullChallengeTimer) {\n fullChallengeTimer = setInterval(function() {\n var iframes = document.getElementsByTagName(\"iframe\");\n var isFullChallenge = false;\n for (i = 0; i < iframes.length; i++) {\n var parentWindow = iframes[i].parentNode ? iframes[i].parentNode.parentNode : undefined;\n var isHidden = parentWindow && parentWindow.style.opacity == 0;\n isFullChallenge = isFullChallenge || (\n !isHidden && \n ((iframes[i].title === 'recaptcha challenge') ||\n (iframes[i].src.indexOf('google.com/recaptcha/api2/bframe') >= 0)));\n }\n if (isFullChallenge) {\n clearInterval(fullChallengeTimer);\n fullChallengeTimer = undefined;\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'fullChallenge'\n })); \n }\n }, 100);\n }\n }\n window.addEventListener('message', function(event) {\n if (event.data.verify) {\n document.getElementById('recaptcha-btn').click();\n }\n });\n </script>\n <script src=\"https://www.google.com/recaptcha/api.js?onload=onLoad&render=explicit&hl=${\n languageCode ?? ''\n }\" onerror=\"onError()\"></script>\n</body></html>`,\n };\n}\n\nfunction validateFirebaseConfig(firebaseConfig?: FirebaseOptions) {\n if (!firebaseConfig) {\n throw new CodedError(\n 'ERR_FIREBASE_RECAPTCHA_CONFIG',\n `Missing firebase web configuration. Please set the \"expo.web.config.firebase\" field in \"app.json\" or use the \"firebaseConfig\" prop.`\n );\n }\n const { authDomain } = firebaseConfig;\n if (!authDomain) {\n throw new CodedError(\n 'ERR_FIREBASE_RECAPTCHA_CONFIG',\n `Missing \"authDomain\" in firebase web configuration.`\n );\n }\n}\n\nexport default function FirebaseRecaptcha(props: Props) {\n const {\n firebaseConfig,\n firebaseVersion,\n appVerificationDisabledForTesting,\n languageCode,\n onVerify,\n onLoad,\n onError,\n onFullChallenge,\n invisible,\n verify,\n ...otherProps\n } = props;\n const webview = React.useRef(null);\n const [loaded, setLoaded] = React.useState(false);\n React.useEffect(() => {\n if (webview.current && loaded && verify) {\n // @ts-ignore: Object is possibly null\n webview.current.injectJavaScript(`\n (function(){\n window.dispatchEvent(new MessageEvent('message', {data: { verify: true }}));\n })();\n true;\n `);\n }\n return () => {};\n }, [webview, verify, loaded]);\n validateFirebaseConfig(firebaseConfig);\n if (!firebaseConfig) {\n console.error(\n `FirebaseRecaptcha: Missing firebase web configuration. Please set the \"expo.web.config.firebase\" field in \"app.json\" or use the \"firebaseConfig\" prop.`\n );\n return null;\n }\n return (\n <WebView\n ref={webview}\n javaScriptEnabled\n automaticallyAdjustContentInsets\n scalesPageToFit\n mixedContentMode=\"always\"\n source={getWebviewSource(\n firebaseConfig,\n firebaseVersion,\n appVerificationDisabledForTesting,\n languageCode,\n invisible\n )}\n onError={onError}\n onMessage={(event) => {\n const data = JSON.parse(event.nativeEvent.data);\n switch (data.type) {\n case 'load':\n if (onLoad) {\n setLoaded(true);\n onLoad();\n }\n break;\n case 'error':\n if (onError) {\n onError();\n }\n break;\n case 'verify':\n onVerify(data.token);\n break;\n case 'fullChallenge':\n if (onFullChallenge) {\n onFullChallenge();\n }\n break;\n }\n }}\n {...otherProps}\n />\n );\n}\n\nFirebaseRecaptcha.defaultProps = {\n firebaseConfig: DEFAULT_WEB_APP_OPTIONS,\n};\n"]}
\ No newline at end of file
+{"version":3,"file":"FirebaseRecaptcha.js","sourceRoot":"","sources":["../src/FirebaseRecaptcha.tsx"],"names":[],"mappings":"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","sourcesContent":["import Constants from \"expo-constants\";\nimport { CodedError } from \"expo-modules-core\";\nimport * as React from \"react\";\n\nimport { FirebaseOptions } from \"./FirebaseRecaptcha.types\";\nimport { WebView } from \"./WebView\";\n\nfunction getDefaultWebOptions(): FirebaseOptions | void {\n return Constants.expoConfig?.web?.config?.firebase;\n}\n\n/**\n * The default Firebase options as defined in `web.config.firebase` in `app.json`.\n */\nconst DEFAULT_WEB_APP_OPTIONS: FirebaseOptions | void = getDefaultWebOptions();\n\ninterface Props extends React.ComponentProps<typeof WebView> {\n firebaseConfig?: FirebaseOptions;\n firebaseVersion?: string;\n appVerificationDisabledForTesting?: boolean;\n languageCode?: string;\n onLoad?: () => any;\n onError?: () => any;\n onVerify: (token: string) => any;\n onFullChallenge?: () => any;\n invisible?: boolean;\n verify?: boolean;\n}\n\nfunction getWebviewSource(\n firebaseConfig: FirebaseOptions,\n firebaseVersion?: string,\n appVerificationDisabledForTesting: boolean = false,\n languageCode?: string,\n invisible?: boolean\n) {\n firebaseVersion = firebaseVersion || '8.0.0';\n return {\n baseUrl: `https://${firebaseConfig.authDomain}`,\n html: `\n<!DOCTYPE html><html>\n<head>\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no\">\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n <meta name=\"HandheldFriendly\" content=\"true\">\n <script src=\"https://www.gstatic.com/firebasejs/${firebaseVersion}/firebase-app.js\"></script>\n <script src=\"https://www.gstatic.com/firebasejs/${firebaseVersion}/firebase-auth.js\"></script>\n <script type=\"text/javascript\">firebase.initializeApp(${JSON.stringify(firebaseConfig)});</script>\n <style>\n html, body {\n height: 100%;\n ${invisible ? `padding: 0; margin: 0;` : ``}\n }\n #recaptcha-btn {\n width: 100%;\n height: 100%;\n padding: 0;\n margin: 0;\n border: 0;\n user-select: none;\n -webkit-user-select: none;\n }\n </style>\n</head>\n<body>\n ${\n invisible\n ? `<button id=\"recaptcha-btn\" type=\"button\" onclick=\"onClickButton()\">Confirm reCAPTCHA</button>`\n : `<div id=\"recaptcha-cont\" class=\"g-recaptcha\"></div>`\n }\n <script>\n var fullChallengeTimer;\n function onVerify(token) {\n if (fullChallengeTimer) {\n clearInterval(fullChallengeTimer);\n fullChallengeTimer = undefined;\n }\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'verify',\n token: token\n }));\n }\n function onLoad() {\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'load'\n }));\n firebase.auth().settings.appVerificationDisabledForTesting = ${appVerificationDisabledForTesting};\n ${languageCode ? `firebase.auth().languageCode = '${languageCode}';` : ''}\n window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier(\"${\n invisible ? 'recaptcha-btn' : 'recaptcha-cont'\n }\", {\n size: \"${invisible ? 'invisible' : 'normal'}\",\n callback: onVerify\n });\n window.recaptchaVerifier.render();\n }\n function onError() {\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'error'\n }));\n }\n function onClickButton() {\n if (!fullChallengeTimer) {\n fullChallengeTimer = setInterval(function() {\n var iframes = document.getElementsByTagName(\"iframe\");\n var isFullChallenge = false;\n for (i = 0; i < iframes.length; i++) {\n var parentWindow = iframes[i].parentNode ? iframes[i].parentNode.parentNode : undefined;\n var isHidden = parentWindow && parentWindow.style.opacity == 0;\n isFullChallenge = isFullChallenge || (\n !isHidden && \n ((iframes[i].title === 'recaptcha challenge') ||\n (iframes[i].src.indexOf('google.com/recaptcha/api2/bframe') >= 0)));\n }\n if (isFullChallenge) {\n clearInterval(fullChallengeTimer);\n fullChallengeTimer = undefined;\n window.ReactNativeWebView.postMessage(JSON.stringify({\n type: 'fullChallenge'\n })); \n }\n }, 100);\n }\n }\n window.addEventListener('message', function(event) {\n if (event.data.verify) {\n document.getElementById('recaptcha-btn').click();\n }\n });\n </script>\n <script src=\"https://www.google.com/recaptcha/api.js?onload=onLoad&render=explicit&hl=${\n languageCode ?? ''\n }\" onerror=\"onError()\"></script>\n</body></html>`,\n };\n}\n\nfunction validateFirebaseConfig(firebaseConfig?: FirebaseOptions) {\n if (!firebaseConfig) {\n throw new CodedError(\n 'ERR_FIREBASE_RECAPTCHA_CONFIG',\n `Missing firebase web configuration. Please set the \"expo.web.config.firebase\" field in \"app.json\" or use the \"firebaseConfig\" prop.`\n );\n }\n const { authDomain } = firebaseConfig;\n if (!authDomain) {\n throw new CodedError(\n 'ERR_FIREBASE_RECAPTCHA_CONFIG',\n `Missing \"authDomain\" in firebase web configuration.`\n );\n }\n}\n\nexport default function FirebaseRecaptcha(props: Props) {\n const {\n firebaseConfig,\n firebaseVersion,\n appVerificationDisabledForTesting,\n languageCode,\n onVerify,\n onLoad,\n onError,\n onFullChallenge,\n invisible,\n verify,\n ...otherProps\n } = props;\n const webview = React.useRef(null);\n const [loaded, setLoaded] = React.useState(false);\n React.useEffect(() => {\n if (webview.current && loaded && verify) {\n // @ts-ignore: Object is possibly null\n webview.current.injectJavaScript(`\n (function(){\n window.dispatchEvent(new MessageEvent('message', {data: { verify: true }}));\n })();\n true;\n `);\n }\n return () => {};\n }, [webview, verify, loaded]);\n validateFirebaseConfig(firebaseConfig);\n if (!firebaseConfig) {\n console.error(\n `FirebaseRecaptcha: Missing firebase web configuration. Please set the \"expo.web.config.firebase\" field in \"app.json\" or use the \"firebaseConfig\" prop.`\n );\n return null;\n }\n return (\n <WebView\n ref={webview}\n javaScriptEnabled\n automaticallyAdjustContentInsets\n scalesPageToFit\n mixedContentMode=\"always\"\n source={getWebviewSource(\n firebaseConfig,\n firebaseVersion,\n appVerificationDisabledForTesting,\n languageCode,\n invisible\n )}\n onError={onError}\n onMessage={(event) => {\n const data = JSON.parse(event.nativeEvent.data);\n switch (data.type) {\n case 'load':\n if (onLoad) {\n setLoaded(true);\n onLoad();\n }\n break;\n case 'error':\n if (onError) {\n onError();\n }\n break;\n case 'verify':\n onVerify(data.token);\n break;\n case 'fullChallenge':\n if (onFullChallenge) {\n onFullChallenge();\n }\n break;\n }\n }}\n {...otherProps}\n />\n );\n}\n\nFirebaseRecaptcha.defaultProps = {\n firebaseConfig: DEFAULT_WEB_APP_OPTIONS,\n};\n"]}
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.d.ts b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.d.ts
index f39179d..f6a69ef 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.d.ts
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.d.ts
@@ -2,4 +2,33 @@ export interface FirebaseAuthApplicationVerifier {
readonly type: string;
verify(): Promise<string>;
}
+export interface FirebaseOptions {
+ /**
+ * Unique identifier of the Firebase app.
+ */
+ appId?: string;
+ /**
+ * Firebase API key.
+ */
+ apiKey?: string;
+ /**
+ * Firebase database URL.
+ */
+ databaseURL?: string;
+ /**
+ * Tracking identifier for Google Analytics.
+ */
+ trackingId?: string;
+ messagingSenderId?: string;
+ /**
+ * Google Cloud Storage bucket name.
+ */
+ storageBucket?: string;
+ /**
+ * Unique identifier of the Firebase project.
+ */
+ projectId?: string;
+ authDomain?: string;
+ measurementId?: string;
+}
//# sourceMappingURL=FirebaseRecaptcha.types.d.ts.map
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.d.ts.map b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.d.ts.map
index f0fd759..be9b428 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.d.ts.map
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"FirebaseRecaptcha.types.d.ts","sourceRoot":"","sources":["../src/FirebaseRecaptcha.types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3B"}
\ No newline at end of file
+{"version":3,"file":"FirebaseRecaptcha.types.d.ts","sourceRoot":"","sources":["../src/FirebaseRecaptcha.types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.js b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.js
index 094bfc0..d70d7cf 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.js
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.js
@@ -1,2 +1,3 @@
+;
export {};
//# sourceMappingURL=FirebaseRecaptcha.types.js.map
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.js.map b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.js.map
index 8396f95..3502ab8 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.js.map
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptcha.types.js.map
@@ -1 +1 @@
-{"version":3,"file":"FirebaseRecaptcha.types.js","sourceRoot":"","sources":["../src/FirebaseRecaptcha.types.ts"],"names":[],"mappings":"","sourcesContent":["// see: https://github.com/firebase/firebase-js-sdk/blob/dbd54f7c9ef0b5d78d491e26d816084a478bdf04/packages/auth-types/index.d.ts#L142-L145\nexport interface FirebaseAuthApplicationVerifier {\n readonly type: string;\n verify(): Promise<string>;\n}\n"]}
\ No newline at end of file
+{"version":3,"file":"FirebaseRecaptcha.types.js","sourceRoot":"","sources":["../src/FirebaseRecaptcha.types.ts"],"names":[],"mappings":"AAkCC,CAAC","sourcesContent":["// see: https://github.com/firebase/firebase-js-sdk/blob/dbd54f7c9ef0b5d78d491e26d816084a478bdf04/packages/auth-types/index.d.ts#L142-L145\nexport interface FirebaseAuthApplicationVerifier {\n readonly type: string;\n verify(): Promise<string>;\n}\n\nexport interface FirebaseOptions {\n /**\n * Unique identifier of the Firebase app.\n */\n appId?: string;\n /**\n * Firebase API key.\n */\n apiKey?: string;\n /**\n * Firebase database URL.\n */\n databaseURL?: string;\n /**\n * Tracking identifier for Google Analytics.\n */\n trackingId?: string;\n messagingSenderId?: string;\n /**\n * Google Cloud Storage bucket name.\n */\n storageBucket?: string;\n /**\n * Unique identifier of the Firebase project.\n */\n projectId?: string;\n authDomain?: string;\n measurementId?: string;\n};\n"]}
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaBanner.d.ts b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaBanner.d.ts
index fb67b65..87fe62c 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaBanner.d.ts
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaBanner.d.ts
@@ -1,8 +1,9 @@
+import * as React from 'react';
import { TextStyle, StyleProp, ViewProps } from 'react-native';
interface Props extends ViewProps {
textStyle?: StyleProp<TextStyle>;
linkStyle?: StyleProp<TextStyle>;
}
-export default function FirebaseRecaptchaBanner(props: Props): JSX.Element;
+export default function FirebaseRecaptchaBanner(props: Props): React.JSX.Element;
export {};
//# sourceMappingURL=FirebaseRecaptchaBanner.d.ts.map
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaBanner.d.ts.map b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaBanner.d.ts.map
index 732dfcc..9495284 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaBanner.d.ts.map
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaBanner.d.ts.map
@@ -1 +1 @@
-{"version":3,"file":"FirebaseRecaptchaBanner.d.ts","sourceRoot":"","sources":["../src/FirebaseRecaptchaBanner.tsx"],"names":[],"mappings":"AACA,OAAO,EAAmC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhG,UAAU,KAAM,SAAQ,SAAS;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,KAAK,EAAE,KAAK,eAqB3D"}
\ No newline at end of file
+{"version":3,"file":"FirebaseRecaptchaBanner.d.ts","sourceRoot":"","sources":["../src/FirebaseRecaptchaBanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAmC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhG,UAAU,KAAM,SAAQ,SAAS;IAC/B,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAClC;AAED,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,KAAK,EAAE,KAAK,qBAqB3D"}
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.d.ts b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.d.ts
index 63c78ff..eb4f7fb 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.d.ts
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.d.ts
@@ -35,7 +35,7 @@ export default class FirebaseRecaptchaVerifierModal extends React.Component<Prop
private onVerify;
cancel: () => void;
onDismiss: () => void;
- render(): JSX.Element;
+ render(): React.JSX.Element;
}
export {};
//# sourceMappingURL=FirebaseRecaptchaVerifierModal.d.ts.map
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.js.map b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.js.map
index 971b2c6..12299f7 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.js.map
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.js.map
@@ -1 +1 @@
-{"version":3,"file":"FirebaseRecaptchaVerifierModal.js","sourceRoot":"","sources":["../src/FirebaseRecaptchaVerifierModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CodedError } from 'expo-modules-core';\nimport * as React from 'react';\nimport {\n StyleSheet,\n Button,\n View,\n SafeAreaView,\n Text,\n Modal,\n ActivityIndicator,\n} from 'react-native';\n\nimport FirebaseRecaptcha from './FirebaseRecaptcha';\nimport { FirebaseAuthApplicationVerifier } from './FirebaseRecaptcha.types';\n\ninterface Props\n extends Omit<\n React.ComponentProps<typeof FirebaseRecaptcha>,\n 'onVerify' | 'invisible' | 'verify' | 'onVerify' | 'onLoad' | 'onError' | 'onFullChallenge'\n > {\n title?: string;\n cancelLabel?: string;\n attemptInvisibleVerification?: boolean;\n}\ninterface State {\n visible: boolean;\n visibleLoaded: boolean;\n invisibleLoaded: boolean;\n invisibleVerify: boolean;\n invisibleKey: number;\n resolve?: (token: string) => void;\n reject?: (error: Error) => void;\n}\n\nexport default class FirebaseRecaptchaVerifierModal\n extends React.Component<Props, State>\n implements FirebaseAuthApplicationVerifier\n{\n static defaultProps = {\n title: 'reCAPTCHA',\n cancelLabel: 'Cancel',\n };\n\n state: State = {\n visible: false,\n visibleLoaded: false,\n invisibleLoaded: false,\n invisibleVerify: false,\n invisibleKey: 1,\n resolve: undefined,\n reject: undefined,\n };\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (!props.attemptInvisibleVerification && state.invisibleLoaded) {\n return {\n invisibleLoaded: false,\n invisibleVerify: false,\n };\n }\n return null;\n }\n\n get type(): string {\n return 'recaptcha';\n }\n\n async verify(): Promise<string> {\n return new Promise((resolve, reject) => {\n if (this.props.attemptInvisibleVerification) {\n this.setState({\n invisibleVerify: true,\n resolve,\n reject,\n });\n } else {\n this.setState({\n visible: true,\n visibleLoaded: false,\n resolve,\n reject,\n });\n }\n });\n }\n\n // see: https://github.com/expo/expo/issues/14780\n _reset(...args: any): void {}\n\n private onVisibleLoad = () => {\n this.setState({\n visibleLoaded: true,\n });\n };\n\n private onInvisibleLoad = () => {\n this.setState({\n invisibleLoaded: true,\n });\n };\n\n private onFullChallenge = async () => {\n this.setState({\n invisibleVerify: false,\n visible: true,\n });\n };\n\n private onError = () => {\n const { reject } = this.state;\n if (reject) {\n reject(new CodedError('ERR_FIREBASE_RECAPTCHA_ERROR', 'Failed to load reCAPTCHA'));\n }\n this.setState({\n visible: false,\n invisibleVerify: false,\n });\n };\n\n private onVerify = (token: string) => {\n const { resolve } = this.state;\n if (resolve) {\n resolve(token);\n }\n this.setState((state) => ({\n visible: false,\n invisibleVerify: false,\n invisibleLoaded: false,\n invisibleKey: state.invisibleKey + 1,\n }));\n };\n\n cancel = () => {\n const { reject } = this.state;\n if (reject) {\n reject(new CodedError('ERR_FIREBASE_RECAPTCHA_CANCEL', 'Cancelled by user'));\n }\n this.setState({\n visible: false,\n });\n };\n\n onDismiss = () => {\n // onDismiss should be called when the user dismisses the\n // modal using a swipe gesture. Due to a bug in RN this\n // unfortunately doesn't work :/\n //https://github.com/facebook/react-native/issues/26892\n if (this.state.visible) {\n this.cancel();\n }\n };\n\n render() {\n const { title, cancelLabel, attemptInvisibleVerification, ...otherProps } = this.props;\n const { visible, visibleLoaded, invisibleLoaded, invisibleVerify, invisibleKey } = this.state;\n return (\n <View style={styles.container}>\n {attemptInvisibleVerification && (\n <FirebaseRecaptcha\n {...otherProps}\n key={`invisible${invisibleKey}`}\n style={styles.invisible}\n onLoad={this.onInvisibleLoad}\n onError={this.onError}\n onVerify={this.onVerify}\n onFullChallenge={this.onFullChallenge}\n invisible\n verify={invisibleLoaded && invisibleVerify}\n />\n )}\n <Modal\n visible={visible}\n animationType=\"slide\"\n presentationStyle=\"pageSheet\"\n onRequestClose={this.cancel}\n onDismiss={this.onDismiss}>\n <SafeAreaView style={styles.modalContainer}>\n <View style={styles.header}>\n <Text style={styles.title}>{title}</Text>\n <View style={styles.cancel}>\n <Button\n title={cancelLabel || FirebaseRecaptchaVerifierModal.defaultProps.cancelLabel}\n onPress={this.cancel}\n />\n </View>\n </View>\n <View style={styles.content}>\n <FirebaseRecaptcha\n {...otherProps}\n style={styles.content}\n onLoad={this.onVisibleLoad}\n onError={this.onError}\n onVerify={this.onVerify}\n />\n {!visibleLoaded ? (\n <View style={styles.loader}>\n <ActivityIndicator size=\"large\" />\n </View>\n ) : undefined}\n </View>\n </SafeAreaView>\n </Modal>\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: 0,\n height: 0,\n },\n invisible: {\n width: 300,\n height: 300,\n },\n modalContainer: {\n flex: 1,\n },\n header: {\n backgroundColor: '#FBFBFB',\n height: 44,\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n borderBottomColor: '#CECECE',\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n cancel: {\n position: 'absolute',\n left: 8,\n justifyContent: 'center',\n },\n title: {\n fontWeight: 'bold',\n },\n content: {\n flex: 1,\n },\n loader: {\n ...StyleSheet.absoluteFillObject,\n paddingTop: 20,\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n});\n"]}
\ No newline at end of file
+{"version":3,"file":"FirebaseRecaptchaVerifierModal.js","sourceRoot":"","sources":["../src/FirebaseRecaptchaVerifierModal.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CodedError } from 'expo-modules-core';\nimport * as React from 'react';\nimport {\n StyleSheet,\n Button,\n View,\n SafeAreaView,\n Text,\n Modal,\n ActivityIndicator,\n} from 'react-native';\n\nimport FirebaseRecaptcha from './FirebaseRecaptcha';\nimport { FirebaseAuthApplicationVerifier } from './FirebaseRecaptcha.types';\n\ninterface Props\n extends Omit<\n React.ComponentProps<typeof FirebaseRecaptcha>,\n 'onVerify' | 'invisible' | 'verify' | 'onVerify' | 'onLoad' | 'onError' | 'onFullChallenge'\n > {\n title?: string;\n cancelLabel?: string;\n attemptInvisibleVerification?: boolean;\n}\ninterface State {\n visible: boolean;\n visibleLoaded: boolean;\n invisibleLoaded: boolean;\n invisibleVerify: boolean;\n invisibleKey: number;\n resolve?: (token: string) => void;\n reject?: (error: Error) => void;\n}\n\nexport default class FirebaseRecaptchaVerifierModal\n extends React.Component<Props, State>\n implements FirebaseAuthApplicationVerifier\n{\n static defaultProps = {\n title: 'reCAPTCHA',\n cancelLabel: 'Cancel',\n };\n\n state: State = {\n visible: false,\n visibleLoaded: false,\n invisibleLoaded: false,\n invisibleVerify: false,\n invisibleKey: 1,\n resolve: undefined,\n reject: undefined,\n };\n\n static getDerivedStateFromProps(props: Props, state: State) {\n if (!props.attemptInvisibleVerification && state.invisibleLoaded) {\n return {\n invisibleLoaded: false,\n invisibleVerify: false,\n };\n }\n return null;\n }\n\n get type(): string {\n return 'recaptcha';\n }\n\n async verify(): Promise<string> {\n return new Promise((resolve, reject) => {\n if (this.props.attemptInvisibleVerification) {\n this.setState({\n invisibleVerify: true,\n resolve,\n reject,\n });\n } else {\n this.setState({\n visible: true,\n visibleLoaded: false,\n resolve,\n reject,\n });\n }\n });\n }\n\n // see: https://github.com/expo/expo/issues/14780\n _reset(...args: any): void {}\n\n private onVisibleLoad = () => {\n this.setState({\n visibleLoaded: true,\n });\n };\n\n private onInvisibleLoad = () => {\n this.setState({\n invisibleLoaded: true,\n });\n };\n\n private onFullChallenge = async () => {\n this.setState({\n invisibleVerify: false,\n visible: true,\n });\n };\n\n private onError = () => {\n const { reject } = this.state;\n if (reject) {\n reject(new CodedError('ERR_FIREBASE_RECAPTCHA_ERROR', 'Failed to load reCAPTCHA'));\n }\n this.setState({\n visible: false,\n invisibleVerify: false,\n });\n };\n\n private onVerify = (token: string) => {\n const { resolve } = this.state;\n if (resolve) {\n resolve(token);\n }\n this.setState((state) => ({\n visible: false,\n invisibleVerify: false,\n invisibleLoaded: false,\n invisibleKey: state.invisibleKey + 1,\n }));\n };\n\n cancel = () => {\n const { reject } = this.state;\n if (reject) {\n reject(new CodedError('ERR_FIREBASE_RECAPTCHA_CANCEL', 'Cancelled by user'));\n }\n this.setState({\n visible: false,\n });\n };\n\n onDismiss = () => {\n // onDismiss should be called when the user dismisses the\n // modal using a swipe gesture. Due to a bug in RN this\n // unfortunately doesn't work :/\n //https://github.com/facebook/react-native/issues/26892\n if (this.state.visible) {\n this.cancel();\n }\n };\n\n render() {\n const { title, cancelLabel, attemptInvisibleVerification, ...otherProps } = this.props;\n const { visible, visibleLoaded, invisibleLoaded, invisibleVerify, invisibleKey } = this.state;\n return (\n <View style={styles.container}>\n {attemptInvisibleVerification && (\n <FirebaseRecaptcha\n {...otherProps}\n key={`invisible${invisibleKey}`}\n style={styles.invisible}\n onLoad={this.onInvisibleLoad}\n onError={this.onError}\n onVerify={this.onVerify}\n onFullChallenge={this.onFullChallenge}\n invisible\n verify={invisibleLoaded && invisibleVerify}\n />\n )}\n <Modal\n visible={visible}\n animationType=\"slide\"\n presentationStyle=\"pageSheet\"\n onRequestClose={this.cancel}\n onDismiss={this.onDismiss}>\n <SafeAreaView style={styles.modalContainer}>\n <View style={styles.header}>\n <Text style={styles.title}>{title}</Text>\n <View style={styles.cancel}>\n <Button\n title={cancelLabel || FirebaseRecaptchaVerifierModal.defaultProps.cancelLabel}\n onPress={this.cancel}\n />\n </View>\n </View>\n <View style={styles.content}>\n <FirebaseRecaptcha\n {...otherProps}\n style={styles.content}\n onLoad={this.onVisibleLoad}\n onError={this.onError}\n onVerify={this.onVerify}\n />\n {!visibleLoaded ? (\n <View style={styles.loader}>\n <ActivityIndicator size=\"large\" />\n </View>\n ) : undefined}\n </View>\n </SafeAreaView>\n </Modal>\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: 0,\n height: 0,\n },\n invisible: {\n width: 300,\n height: 300,\n },\n modalContainer: {\n flex: 1,\n },\n header: {\n backgroundColor: '#FBFBFB',\n height: 44,\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n borderBottomColor: '#CECECE',\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n cancel: {\n position: 'absolute',\n left: 8,\n justifyContent: 'center',\n },\n title: {\n fontWeight: 'bold',\n },\n content: {\n flex: 1,\n },\n loader: {\n ...StyleSheet.absoluteFillObject,\n paddingTop: 20,\n justifyContent: 'flex-start',\n alignItems: 'center',\n },\n});\n"]}
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.web.js.map b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.web.js.map
index c8e37e9..67095c3 100644
--- a/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.web.js.map
+++ b/node_modules/expo-firebase-recaptcha/build/FirebaseRecaptchaVerifierModal.web.js.map
@@ -1 +1 @@
-{"version":3,"file":"FirebaseRecaptchaVerifierModal.web.js","sourceRoot":"","sources":["../src/FirebaseRecaptchaVerifierModal.web.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,8BAA+B,SAAQ,KAAK,CAAC,SAAgB;IACzD,QAAQ,GAA2C,IAAI,CAAC;IAExD,MAAM,GAAG,CAAC,GAAQ,EAAE,EAAE;QAC5B,IAAI,GAAG,EAAE;YACP,IAAI,IAAI,CAAC,KAAK,CAAC,iCAAiC,KAAK,SAAS,EAAE;gBAC9D,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,iCAAiC;oBACxD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC;aAClD;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBAC3B,QAAQ,CAAC,IAAI,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;aACxD;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACvD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;aACvE,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;YACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC7C;IACH,CAAC,CAAC;IAEF,qBAAqB,CAAC,SAAgB;QACpC,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,iCAAiC;YAC1C,SAAS,CAAC,iCAAiC;YAC7C,IAAI,CAAC,KAAK,CAAC,4BAA4B,KAAK,SAAS,CAAC,4BAA4B;YAClF,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,CACnD,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,SAAgB;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EAAE;YAC9C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;aAC7C;SACF;IACH,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,YAAY,EAAE,GACrF,IAAI,CAAC,KAAK,CAAC;QACb,OAAO,CACL,6BACE,KAAK,EAAE,MAAM,CAAC,SAAS,EACvB,GAAG,EAAE,GAAG,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,IAC5D,iCAAiC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAClD,IAAI,YAAY,IAAI,EAAE,EAAE,EACxB,EAAE,EAAC,qBAAqB,EACxB,GAAG,EAAE,IAAI,CAAC,MAAM,EAChB,uBAAuB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GACvC,CACH,CAAC;IACJ,CAAC;CACF;AAED,eAAe,KAAK,CAAC,UAAU,CAAC,CAAC,KAA8B,EAAE,GAAQ,EAAE,EAAE,CAAC,CAC5E,oBAAC,8BAA8B,OAAK,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAI,CAC7D,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG;IACb,2DAA2D;IAC3D,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;CAC5B,CAAC","sourcesContent":["import firebase from 'firebase/compat/app';\nimport 'firebase/compat/auth';\nimport * as React from 'react';\n\nimport { FirebaseAuthApplicationVerifier } from './FirebaseRecaptcha.types';\n\ninterface Props {\n attemptInvisibleVerification?: boolean;\n appVerificationDisabledForTesting?: boolean;\n languageCode?: string;\n innerRef: React.MutableRefObject<FirebaseAuthApplicationVerifier | null>;\n}\n\nclass FirebaseRecaptchaVerifierModal extends React.Component<Props> {\n private verifier: FirebaseAuthApplicationVerifier | null = null;\n\n private setRef = (ref: any) => {\n if (ref) {\n if (this.props.appVerificationDisabledForTesting !== undefined) {\n firebase.auth().settings.appVerificationDisabledForTesting =\n !!this.props.appVerificationDisabledForTesting;\n }\n if (this.props.languageCode) {\n firebase.auth().languageCode = this.props.languageCode;\n }\n this.verifier = new firebase.auth.RecaptchaVerifier(ref, {\n size: this.props.attemptInvisibleVerification ? 'invisible' : 'normal',\n });\n } else {\n this.verifier = null;\n }\n if (this.props.innerRef) {\n this.props.innerRef.current = this.verifier;\n }\n };\n\n shouldComponentUpdate(nextProps: Props) {\n return (\n this.props.appVerificationDisabledForTesting !==\n nextProps.appVerificationDisabledForTesting ||\n this.props.attemptInvisibleVerification !== nextProps.attemptInvisibleVerification ||\n this.props.languageCode !== nextProps.languageCode\n );\n }\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.innerRef !== prevProps.innerRef) {\n if (this.props.innerRef) {\n this.props.innerRef.current = this.verifier;\n }\n }\n }\n\n render() {\n const { attemptInvisibleVerification, appVerificationDisabledForTesting, languageCode } =\n this.props;\n return (\n <div\n style={styles.container}\n key={`${attemptInvisibleVerification ? 'invisible' : 'visible'}-${\n appVerificationDisabledForTesting ? 'testing' : 'regular'\n }-${languageCode ?? ''}`}\n id=\"recaptcha-container\"\n ref={this.setRef}\n dangerouslySetInnerHTML={{ __html: '' }}\n />\n );\n }\n}\n\nexport default React.forwardRef((props: Omit<Props, 'innerRef'>, ref: any) => (\n <FirebaseRecaptchaVerifierModal {...props} innerRef={ref} />\n));\n\nconst styles = {\n // Ensure the reCAPTCHA badge is in front or other elements\n container: { zIndex: 1000 },\n};\n"]}
\ No newline at end of file
+{"version":3,"file":"FirebaseRecaptchaVerifierModal.web.js","sourceRoot":"","sources":["../src/FirebaseRecaptchaVerifierModal.web.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,sBAAsB,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,8BAA+B,SAAQ,KAAK,CAAC,SAAgB;IACzD,QAAQ,GAA2C,IAAI,CAAC;IAExD,MAAM,GAAG,CAAC,GAAQ,EAAE,EAAE;QAC5B,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,IAAI,CAAC,KAAK,CAAC,iCAAiC,KAAK,SAAS,EAAE,CAAC;gBAC/D,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,iCAAiC;oBACxD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC;YACnD,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,EAAE,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YACzD,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBACvD,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;aACvE,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9C,CAAC;IACH,CAAC,CAAC;IAEF,qBAAqB,CAAC,SAAgB;QACpC,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,iCAAiC;YAC1C,SAAS,CAAC,iCAAiC;YAC7C,IAAI,CAAC,KAAK,CAAC,4BAA4B,KAAK,SAAS,CAAC,4BAA4B;YAClF,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,YAAY,CACnD,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,SAAgB;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,4BAA4B,EAAE,iCAAiC,EAAE,YAAY,EAAE,GACrF,IAAI,CAAC,KAAK,CAAC;QACb,OAAO,CACL,6BACE,KAAK,EAAE,MAAM,CAAC,SAAS,EACvB,GAAG,EAAE,GAAG,4BAA4B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,IAC5D,iCAAiC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAClD,IAAI,YAAY,IAAI,EAAE,EAAE,EACxB,EAAE,EAAC,qBAAqB,EACxB,GAAG,EAAE,IAAI,CAAC,MAAM,EAChB,uBAAuB,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GACvC,CACH,CAAC;IACJ,CAAC;CACF;AAED,eAAe,KAAK,CAAC,UAAU,CAAC,CAAC,KAA8B,EAAE,GAAQ,EAAE,EAAE,CAAC,CAC5E,oBAAC,8BAA8B,OAAK,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAI,CAC7D,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG;IACb,2DAA2D;IAC3D,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;CAC5B,CAAC","sourcesContent":["import firebase from 'firebase/compat/app';\nimport 'firebase/compat/auth';\nimport * as React from 'react';\n\nimport { FirebaseAuthApplicationVerifier } from './FirebaseRecaptcha.types';\n\ninterface Props {\n attemptInvisibleVerification?: boolean;\n appVerificationDisabledForTesting?: boolean;\n languageCode?: string;\n innerRef: React.MutableRefObject<FirebaseAuthApplicationVerifier | null>;\n}\n\nclass FirebaseRecaptchaVerifierModal extends React.Component<Props> {\n private verifier: FirebaseAuthApplicationVerifier | null = null;\n\n private setRef = (ref: any) => {\n if (ref) {\n if (this.props.appVerificationDisabledForTesting !== undefined) {\n firebase.auth().settings.appVerificationDisabledForTesting =\n !!this.props.appVerificationDisabledForTesting;\n }\n if (this.props.languageCode) {\n firebase.auth().languageCode = this.props.languageCode;\n }\n this.verifier = new firebase.auth.RecaptchaVerifier(ref, {\n size: this.props.attemptInvisibleVerification ? 'invisible' : 'normal',\n });\n } else {\n this.verifier = null;\n }\n if (this.props.innerRef) {\n this.props.innerRef.current = this.verifier;\n }\n };\n\n shouldComponentUpdate(nextProps: Props) {\n return (\n this.props.appVerificationDisabledForTesting !==\n nextProps.appVerificationDisabledForTesting ||\n this.props.attemptInvisibleVerification !== nextProps.attemptInvisibleVerification ||\n this.props.languageCode !== nextProps.languageCode\n );\n }\n\n componentDidUpdate(prevProps: Props) {\n if (this.props.innerRef !== prevProps.innerRef) {\n if (this.props.innerRef) {\n this.props.innerRef.current = this.verifier;\n }\n }\n }\n\n render() {\n const { attemptInvisibleVerification, appVerificationDisabledForTesting, languageCode } =\n this.props;\n return (\n <div\n style={styles.container}\n key={`${attemptInvisibleVerification ? 'invisible' : 'visible'}-${\n appVerificationDisabledForTesting ? 'testing' : 'regular'\n }-${languageCode ?? ''}`}\n id=\"recaptcha-container\"\n ref={this.setRef}\n dangerouslySetInnerHTML={{ __html: '' }}\n />\n );\n }\n}\n\nexport default React.forwardRef((props: Omit<Props, 'innerRef'>, ref: any) => (\n <FirebaseRecaptchaVerifierModal {...props} innerRef={ref} />\n));\n\nconst styles = {\n // Ensure the reCAPTCHA badge is in front or other elements\n container: { zIndex: 1000 },\n};\n"]}
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/src/FirebaseRecaptcha.tsx b/node_modules/expo-firebase-recaptcha/src/FirebaseRecaptcha.tsx
index 82f8193..b833115 100644
--- a/node_modules/expo-firebase-recaptcha/src/FirebaseRecaptcha.tsx
+++ b/node_modules/expo-firebase-recaptcha/src/FirebaseRecaptcha.tsx
@@ -1,8 +1,19 @@
-import { DEFAULT_WEB_APP_OPTIONS, FirebaseOptions } from 'expo-firebase-core';
-import { CodedError } from 'expo-modules-core';
-import * as React from 'react';
+import Constants from "expo-constants";
+import { CodedError } from "expo-modules-core";
+import * as React from "react";
+
+import { FirebaseOptions } from "./FirebaseRecaptcha.types";
+import { WebView } from "./WebView";
+
+function getDefaultWebOptions(): FirebaseOptions | void {
+ return Constants.expoConfig?.web?.config?.firebase;
+}
+
+/**
+ * The default Firebase options as defined in `web.config.firebase` in `app.json`.
+ */
+const DEFAULT_WEB_APP_OPTIONS: FirebaseOptions | void = getDefaultWebOptions();
-import { WebView } from './WebView';
interface Props extends React.ComponentProps<typeof WebView> {
firebaseConfig?: FirebaseOptions;
diff --git a/node_modules/expo-firebase-recaptcha/src/FirebaseRecaptcha.types.ts b/node_modules/expo-firebase-recaptcha/src/FirebaseRecaptcha.types.ts
index af85ee9..63ca944 100644
--- a/node_modules/expo-firebase-recaptcha/src/FirebaseRecaptcha.types.ts
+++ b/node_modules/expo-firebase-recaptcha/src/FirebaseRecaptcha.types.ts
@@ -3,3 +3,33 @@ export interface FirebaseAuthApplicationVerifier {
readonly type: string;
verify(): Promise<string>;
}
+
+export interface FirebaseOptions {
+ /**
+ * Unique identifier of the Firebase app.
+ */
+ appId?: string;
+ /**
+ * Firebase API key.
+ */
+ apiKey?: string;
+ /**
+ * Firebase database URL.
+ */
+ databaseURL?: string;
+ /**
+ * Tracking identifier for Google Analytics.
+ */
+ trackingId?: string;
+ messagingSenderId?: string;
+ /**
+ * Google Cloud Storage bucket name.
+ */
+ storageBucket?: string;
+ /**
+ * Unique identifier of the Firebase project.
+ */
+ projectId?: string;
+ authDomain?: string;
+ measurementId?: string;
+};
\ No newline at end of file
diff --git a/node_modules/expo-firebase-recaptcha/package.json b/node_modules/expo-firebase-recaptcha/package.json
index 3e98752..cb86d37 100644
--- a/node_modules/expo-firebase-recaptcha/package.json
+++ b/node_modules/expo-firebase-recaptcha/package.json
@@ -36,11 +36,9 @@
"@testing-library/react": "10.4.3",
"expo-module-scripts": "^3.0.0"
},
- "dependencies": {
- "expo-firebase-core": "~6.0.0"
- },
"peerDependencies": {
- "react-native-webview": "*"
+ "react-native-webview": "*",
+ "expo-firebase-core": "~6.0.0"
},
"peerDependenciesMeta": {
"react-native-webview": {
\ No newline at end of file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment