@firebase/auth 1.13.2 → 1.13.3-20260615181107

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.
Files changed (61) hide show
  1. package/dist/browser-cjs/{index-cb4d4017.js → index-1f558345.js} +42 -8
  2. package/dist/browser-cjs/index-1f558345.js.map +1 -0
  3. package/dist/browser-cjs/index.js +1 -1
  4. package/dist/browser-cjs/internal.js +1 -1
  5. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  6. package/dist/browser-cjs/test/helpers/mock_loadjs.d.ts +17 -0
  7. package/dist/cordova/index.js +2 -2
  8. package/dist/cordova/internal.js +2 -2
  9. package/dist/cordova/{popup_redirect-66dd494e.js → popup_redirect-c0dec4fb.js} +43 -9
  10. package/dist/cordova/popup_redirect-c0dec4fb.js.map +1 -0
  11. package/dist/cordova/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  12. package/dist/cordova/test/helpers/mock_loadjs.d.ts +17 -0
  13. package/dist/esm/{index-9d184c40.js → index-139892c1.js} +43 -9
  14. package/dist/esm/index-139892c1.js.map +1 -0
  15. package/dist/esm/index.js +1 -1
  16. package/dist/esm/internal.js +2 -2
  17. package/dist/esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  18. package/dist/esm/test/helpers/mock_loadjs.d.ts +17 -0
  19. package/dist/index.webworker.js +42 -8
  20. package/dist/index.webworker.js.map +1 -1
  21. package/dist/node/index.js +1 -1
  22. package/dist/node/internal.js +1 -1
  23. package/dist/node/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  24. package/dist/node/test/helpers/mock_loadjs.d.ts +17 -0
  25. package/dist/node/{totp-90def736.js → totp-4803792f.js} +42 -8
  26. package/dist/node/totp-4803792f.js.map +1 -0
  27. package/dist/node-esm/index.js +1 -1
  28. package/dist/node-esm/internal.js +2 -2
  29. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  30. package/dist/node-esm/test/helpers/mock_loadjs.d.ts +17 -0
  31. package/dist/node-esm/{totp-5d40279f.js → totp-2a4487f1.js} +43 -9
  32. package/dist/node-esm/totp-2a4487f1.js.map +1 -0
  33. package/dist/rn/{index-d963ed8d.js → index-a4f26c54.js} +42 -8
  34. package/dist/rn/index-a4f26c54.js.map +1 -0
  35. package/dist/rn/index.js +1 -1
  36. package/dist/rn/internal.js +2 -2
  37. package/dist/rn/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  38. package/dist/rn/test/helpers/mock_loadjs.d.ts +17 -0
  39. package/dist/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  40. package/dist/test/helpers/mock_loadjs.d.ts +17 -0
  41. package/dist/web-extension-cjs/index.js +1 -1
  42. package/dist/web-extension-cjs/internal.js +1 -1
  43. package/dist/web-extension-cjs/{register-5aa6f443.js → register-d3246200.js} +42 -8
  44. package/dist/web-extension-cjs/register-d3246200.js.map +1 -0
  45. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  46. package/dist/web-extension-cjs/test/helpers/mock_loadjs.d.ts +17 -0
  47. package/dist/web-extension-esm/index.js +2 -2
  48. package/dist/web-extension-esm/internal.js +2 -2
  49. package/dist/web-extension-esm/{register-01796967.js → register-afae00a4.js} +43 -9
  50. package/dist/web-extension-esm/register-afae00a4.js.map +1 -0
  51. package/dist/web-extension-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +18 -0
  52. package/dist/web-extension-esm/test/helpers/mock_loadjs.d.ts +17 -0
  53. package/package.json +3 -3
  54. package/dist/browser-cjs/index-cb4d4017.js.map +0 -1
  55. package/dist/cordova/popup_redirect-66dd494e.js.map +0 -1
  56. package/dist/esm/index-9d184c40.js.map +0 -1
  57. package/dist/node/totp-90def736.js.map +0 -1
  58. package/dist/node-esm/totp-5d40279f.js.map +0 -1
  59. package/dist/rn/index-d963ed8d.js.map +0 -1
  60. package/dist/web-extension-cjs/register-5aa6f443.js.map +0 -1
  61. package/dist/web-extension-esm/register-01796967.js.map +0 -1
@@ -905,8 +905,8 @@ async function _performApiRequest(auth, method, path, request, customErrorMap =
905
905
  }
906
906
  }
907
907
  const query = util.querystring({
908
- key: auth.config.apiKey,
909
- ...params
908
+ ...params,
909
+ key: auth.config.apiKey
910
910
  }).slice(1);
911
911
  const headers = await auth._getAdditionalHeaders();
912
912
  headers["Content-Type" /* HttpHeader.CONTENT_TYPE */] = 'application/json';
@@ -923,7 +923,7 @@ async function _performApiRequest(auth, method, path, request, customErrorMap =
923
923
  'RequestInitializerDict' is not implemented."
924
924
  https://github.com/cloudflare/next-on-pages/issues/487 */
925
925
  if (!util.isCloudflareWorker()) {
926
- fetchArgs.referrerPolicy = 'no-referrer';
926
+ fetchArgs.referrerPolicy = 'strict-origin-when-cross-origin';
927
927
  }
928
928
  if (auth.emulatorConfig && util.isCloudWorkstation(auth.emulatorConfig.host)) {
929
929
  fetchArgs.credentials = 'include';
@@ -3431,6 +3431,7 @@ function generateRandomAlphaNumericString(len) {
3431
3431
  /* eslint-disable @typescript-eslint/no-require-imports */
3432
3432
  const RECAPTCHA_ENTERPRISE_VERIFIER_TYPE = 'recaptcha-enterprise';
3433
3433
  const FAKE_TOKEN = 'NO_RECAPTCHA';
3434
+ const RECAPTCHA_ENTERPRISE_ONLOAD_CALLBACK_NAME = 'onFirebaseAuthREInstanceReady';
3434
3435
  class RecaptchaEnterpriseVerifier {
3435
3436
  /**
3436
3437
  *
@@ -3510,8 +3511,13 @@ class RecaptchaEnterpriseVerifier {
3510
3511
  }
3511
3512
  return new Promise((resolve, reject) => {
3512
3513
  retrieveSiteKey(this.auth)
3513
- .then(siteKey => {
3514
- if (!forceRefresh && isEnterprise(window.grecaptcha)) {
3514
+ .then(async (siteKey) => {
3515
+ if (!forceRefresh &&
3516
+ isEnterprise(window.grecaptcha) &&
3517
+ // If download has already been initiated, do not trigger another
3518
+ // download, await the promise here.
3519
+ RecaptchaEnterpriseVerifier.scriptInjectionDeferred) {
3520
+ await RecaptchaEnterpriseVerifier.scriptInjectionDeferred.promise;
3515
3521
  retrieveRecaptchaToken(siteKey, resolve, reject);
3516
3522
  }
3517
3523
  else {
@@ -3521,9 +3527,25 @@ class RecaptchaEnterpriseVerifier {
3521
3527
  }
3522
3528
  let url = _recaptchaEnterpriseScriptUrl();
3523
3529
  if (url.length !== 0) {
3524
- url += siteKey;
3530
+ url +=
3531
+ siteKey +
3532
+ `&onload=${RECAPTCHA_ENTERPRISE_ONLOAD_CALLBACK_NAME}`;
3525
3533
  }
3534
+ // Existence of deferred indicates download has been initiated.
3535
+ RecaptchaEnterpriseVerifier.scriptInjectionDeferred =
3536
+ new util.Deferred();
3537
+ /**
3538
+ * Script attached to global window object that will be called
3539
+ * when the ReCAPTCHA Enterprise instance is ready.
3540
+ * grecaptcha.ready() is not reliable when there are multiple
3541
+ * scripts on the page, and script.onload only indicates the
3542
+ * script has downloaded, not that it has initialized.
3543
+ */
3544
+ window[RECAPTCHA_ENTERPRISE_ONLOAD_CALLBACK_NAME] = () => {
3545
+ RecaptchaEnterpriseVerifier.scriptInjectionDeferred?.resolve();
3546
+ };
3526
3547
  _loadJS(url)
3548
+ .then(() => RecaptchaEnterpriseVerifier.scriptInjectionDeferred?.promise)
3527
3549
  .then(() => {
3528
3550
  retrieveRecaptchaToken(siteKey, resolve, reject);
3529
3551
  })
@@ -3538,6 +3560,18 @@ class RecaptchaEnterpriseVerifier {
3538
3560
  });
3539
3561
  }
3540
3562
  }
3563
+ /**
3564
+ * Deferred that resolves when script tag has been injected onto the page
3565
+ * and the script is ready (grecaptcha.ready() and script.onload are not
3566
+ * reliable indicators, so this resolves when the global
3567
+ * `window[RECAPTCHA_ENTERPRISE_ONLOAD_CALLBACK_NAME]()` callback provided to the recaptcha url param "onload"
3568
+ * is triggered).
3569
+ * As a static variable this is applied to all instances of the class.
3570
+ * This will cause an error if users try to create multiple RecaptchaVerifiers
3571
+ * with different Recaptcha Enterprise sitekeys, which should be an
3572
+ * unuspported use case.
3573
+ */
3574
+ RecaptchaEnterpriseVerifier.scriptInjectionDeferred = null;
3541
3575
  async function injectRecaptchaFields(auth, request, action, isCaptchaResp = false, isFakeToken = false) {
3542
3576
  const verifier = new RecaptchaEnterpriseVerifier(auth);
3543
3577
  let captchaResponse;
@@ -10907,7 +10941,7 @@ function _isEmptyString(input) {
10907
10941
  }
10908
10942
 
10909
10943
  var name = "@firebase/auth";
10910
- var version = "1.13.2";
10944
+ var version = "1.13.3-20260615181107";
10911
10945
 
10912
10946
  /**
10913
10947
  * @license
@@ -11267,4 +11301,4 @@ exports.useDeviceLanguage = useDeviceLanguage;
11267
11301
  exports.validatePassword = validatePassword;
11268
11302
  exports.verifyBeforeUpdateEmail = verifyBeforeUpdateEmail;
11269
11303
  exports.verifyPasswordResetCode = verifyPasswordResetCode;
11270
- //# sourceMappingURL=index-cb4d4017.js.map
11304
+ //# sourceMappingURL=index-1f558345.js.map