@firebase/auth 1.7.9-canary.aa6db78eb → 1.7.9-canary.b942e9e6e

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 (148) hide show
  1. package/README.md +32 -1
  2. package/dist/auth-public.d.ts +22 -10
  3. package/dist/auth.d.ts +22 -10
  4. package/dist/browser-cjs/{index-8c4960c5.js → index-c1e3d4f9.js} +392 -175
  5. package/dist/browser-cjs/index-c1e3d4f9.js.map +1 -0
  6. package/dist/browser-cjs/index.js +1 -1
  7. package/dist/browser-cjs/internal.js +1 -1
  8. package/dist/browser-cjs/src/api/account_management/mfa.d.ts +5 -1
  9. package/dist/browser-cjs/src/api/authentication/mfa.d.ts +5 -1
  10. package/dist/browser-cjs/src/api/authentication/sms.d.ts +5 -1
  11. package/dist/browser-cjs/src/api/index.d.ts +7 -3
  12. package/dist/browser-cjs/src/platform_browser/providers/phone.d.ts +7 -5
  13. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  14. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  15. package/dist/browser-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
  16. package/dist/browser-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  17. package/dist/cordova/auth-cordova-public.d.ts +7 -0
  18. package/dist/cordova/auth-cordova.d.ts +7 -0
  19. package/dist/cordova/index.js +2 -2
  20. package/dist/cordova/internal.js +168 -177
  21. package/dist/cordova/internal.js.map +1 -1
  22. package/dist/cordova/{popup_redirect-1e109c2a.js → popup_redirect-63b3580d.js} +285 -21
  23. package/dist/cordova/popup_redirect-63b3580d.js.map +1 -0
  24. package/dist/cordova/src/api/account_management/mfa.d.ts +5 -1
  25. package/dist/cordova/src/api/authentication/mfa.d.ts +5 -1
  26. package/dist/cordova/src/api/authentication/sms.d.ts +5 -1
  27. package/dist/cordova/src/api/index.d.ts +7 -3
  28. package/dist/cordova/src/platform_browser/providers/phone.d.ts +7 -5
  29. package/dist/cordova/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  30. package/dist/cordova/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  31. package/dist/cordova/src/platform_browser/strategies/phone.d.ts +10 -6
  32. package/dist/cordova/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  33. package/dist/esm2017/{index-6cb7b51a.js → index-c8d513e3.js} +392 -175
  34. package/dist/esm2017/index-c8d513e3.js.map +1 -0
  35. package/dist/esm2017/index.js +1 -1
  36. package/dist/esm2017/internal.js +2 -2
  37. package/dist/esm2017/src/api/account_management/mfa.d.ts +5 -1
  38. package/dist/esm2017/src/api/authentication/mfa.d.ts +5 -1
  39. package/dist/esm2017/src/api/authentication/sms.d.ts +5 -1
  40. package/dist/esm2017/src/api/index.d.ts +7 -3
  41. package/dist/esm2017/src/platform_browser/providers/phone.d.ts +7 -5
  42. package/dist/esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  43. package/dist/esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  44. package/dist/esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
  45. package/dist/esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  46. package/dist/esm5/{index-262b3f24.js → index-82b3e33f.js} +450 -195
  47. package/dist/esm5/index-82b3e33f.js.map +1 -0
  48. package/dist/esm5/index.js +1 -1
  49. package/dist/esm5/internal.js +2 -2
  50. package/dist/esm5/src/api/account_management/mfa.d.ts +5 -1
  51. package/dist/esm5/src/api/authentication/mfa.d.ts +5 -1
  52. package/dist/esm5/src/api/authentication/sms.d.ts +5 -1
  53. package/dist/esm5/src/api/index.d.ts +7 -3
  54. package/dist/esm5/src/platform_browser/providers/phone.d.ts +7 -5
  55. package/dist/esm5/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  56. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  57. package/dist/esm5/src/platform_browser/strategies/phone.d.ts +10 -6
  58. package/dist/esm5/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  59. package/dist/index.webworker.esm5.js +163 -19
  60. package/dist/index.webworker.esm5.js.map +1 -1
  61. package/dist/node/index.js +1 -1
  62. package/dist/node/internal.js +1 -1
  63. package/dist/node/src/api/account_management/mfa.d.ts +5 -1
  64. package/dist/node/src/api/authentication/mfa.d.ts +5 -1
  65. package/dist/node/src/api/authentication/sms.d.ts +5 -1
  66. package/dist/node/src/api/index.d.ts +7 -3
  67. package/dist/node/src/platform_browser/providers/phone.d.ts +7 -5
  68. package/dist/node/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  69. package/dist/node/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  70. package/dist/node/src/platform_browser/strategies/phone.d.ts +10 -6
  71. package/dist/node/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  72. package/dist/node/{totp-617e4db6.js → totp-c9a669c7.js} +164 -20
  73. package/dist/node/totp-c9a669c7.js.map +1 -0
  74. package/dist/node-esm/index.js +1 -1
  75. package/dist/node-esm/internal.js +2 -2
  76. package/dist/node-esm/src/api/account_management/mfa.d.ts +5 -1
  77. package/dist/node-esm/src/api/authentication/mfa.d.ts +5 -1
  78. package/dist/node-esm/src/api/authentication/sms.d.ts +5 -1
  79. package/dist/node-esm/src/api/index.d.ts +7 -3
  80. package/dist/node-esm/src/platform_browser/providers/phone.d.ts +7 -5
  81. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  82. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  83. package/dist/node-esm/src/platform_browser/strategies/phone.d.ts +10 -6
  84. package/dist/node-esm/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  85. package/dist/node-esm/{totp-98ba6f1f.js → totp-9698d31a.js} +168 -30
  86. package/dist/node-esm/totp-9698d31a.js.map +1 -0
  87. package/dist/rn/{index-198b1e87.js → index-dd6cc9b0.js} +450 -195
  88. package/dist/rn/index-dd6cc9b0.js.map +1 -0
  89. package/dist/rn/index.js +1 -1
  90. package/dist/rn/internal.js +1 -1
  91. package/dist/rn/src/api/account_management/mfa.d.ts +5 -1
  92. package/dist/rn/src/api/authentication/mfa.d.ts +5 -1
  93. package/dist/rn/src/api/authentication/sms.d.ts +5 -1
  94. package/dist/rn/src/api/index.d.ts +7 -3
  95. package/dist/rn/src/platform_browser/providers/phone.d.ts +7 -5
  96. package/dist/rn/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  97. package/dist/rn/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  98. package/dist/rn/src/platform_browser/strategies/phone.d.ts +10 -6
  99. package/dist/rn/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  100. package/dist/src/api/account_management/mfa.d.ts +5 -1
  101. package/dist/src/api/authentication/mfa.d.ts +5 -1
  102. package/dist/src/api/authentication/sms.d.ts +5 -1
  103. package/dist/src/api/index.d.ts +7 -3
  104. package/dist/src/platform_browser/providers/phone.d.ts +7 -5
  105. package/dist/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  106. package/dist/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  107. package/dist/src/platform_browser/strategies/phone.d.ts +10 -6
  108. package/dist/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  109. package/dist/web-extension-cjs/index.js +1 -1
  110. package/dist/web-extension-cjs/internal.js +115 -147
  111. package/dist/web-extension-cjs/internal.js.map +1 -1
  112. package/dist/web-extension-cjs/{register-0aa8e295.js → register-1a706c5a.js} +283 -30
  113. package/dist/web-extension-cjs/register-1a706c5a.js.map +1 -0
  114. package/dist/web-extension-cjs/src/api/account_management/mfa.d.ts +5 -1
  115. package/dist/web-extension-cjs/src/api/authentication/mfa.d.ts +5 -1
  116. package/dist/web-extension-cjs/src/api/authentication/sms.d.ts +5 -1
  117. package/dist/web-extension-cjs/src/api/index.d.ts +7 -3
  118. package/dist/web-extension-cjs/src/platform_browser/providers/phone.d.ts +7 -5
  119. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  120. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  121. package/dist/web-extension-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
  122. package/dist/web-extension-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  123. package/dist/web-extension-esm2017/auth-web-extension-public.d.ts +7 -0
  124. package/dist/web-extension-esm2017/auth-web-extension.d.ts +7 -0
  125. package/dist/web-extension-esm2017/index.js +2 -2
  126. package/dist/web-extension-esm2017/internal.js +115 -147
  127. package/dist/web-extension-esm2017/internal.js.map +1 -1
  128. package/dist/web-extension-esm2017/{register-68ef89ff.js → register-3c017834.js} +280 -31
  129. package/dist/web-extension-esm2017/register-3c017834.js.map +1 -0
  130. package/dist/web-extension-esm2017/src/api/account_management/mfa.d.ts +5 -1
  131. package/dist/web-extension-esm2017/src/api/authentication/mfa.d.ts +5 -1
  132. package/dist/web-extension-esm2017/src/api/authentication/sms.d.ts +5 -1
  133. package/dist/web-extension-esm2017/src/api/index.d.ts +7 -3
  134. package/dist/web-extension-esm2017/src/platform_browser/providers/phone.d.ts +7 -5
  135. package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  136. package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  137. package/dist/web-extension-esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
  138. package/dist/web-extension-esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  139. package/package.json +6 -6
  140. package/dist/browser-cjs/index-8c4960c5.js.map +0 -1
  141. package/dist/cordova/popup_redirect-1e109c2a.js.map +0 -1
  142. package/dist/esm2017/index-6cb7b51a.js.map +0 -1
  143. package/dist/esm5/index-262b3f24.js.map +0 -1
  144. package/dist/node/totp-617e4db6.js.map +0 -1
  145. package/dist/node-esm/totp-98ba6f1f.js.map +0 -1
  146. package/dist/rn/index-198b1e87.js.map +0 -1
  147. package/dist/web-extension-cjs/register-0aa8e295.js.map +0 -1
  148. package/dist/web-extension-esm2017/register-68ef89ff.js.map +0 -1
@@ -1982,6 +1982,16 @@ var RecaptchaConfig = /** @class */ (function () {
1982
1982
  "ENFORCE" /* EnforcementState.ENFORCE */ ||
1983
1983
  this.getProviderEnforcementState(providerStr) === "AUDIT" /* EnforcementState.AUDIT */);
1984
1984
  };
1985
+ /**
1986
+ * Returns true if reCAPTCHA Enterprise protection is enabled in at least one provider, otherwise
1987
+ * returns false.
1988
+ *
1989
+ * @returns Whether or not reCAPTCHA Enterprise protection is enabled for at least one provider.
1990
+ */
1991
+ RecaptchaConfig.prototype.isAnyProviderEnabled = function () {
1992
+ return (this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) ||
1993
+ this.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */));
1994
+ };
1985
1995
  return RecaptchaConfig;
1986
1996
  }());
1987
1997
 
@@ -4651,6 +4661,180 @@ function _generateCallbackName(prefix) {
4651
4661
  return "__".concat(prefix).concat(Math.floor(Math.random() * 1000000));
4652
4662
  }
4653
4663
 
4664
+ /**
4665
+ * @license
4666
+ * Copyright 2020 Google LLC
4667
+ *
4668
+ * Licensed under the Apache License, Version 2.0 (the "License");
4669
+ * you may not use this file except in compliance with the License.
4670
+ * You may obtain a copy of the License at
4671
+ *
4672
+ * http://www.apache.org/licenses/LICENSE-2.0
4673
+ *
4674
+ * Unless required by applicable law or agreed to in writing, software
4675
+ * distributed under the License is distributed on an "AS IS" BASIS,
4676
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4677
+ * See the License for the specific language governing permissions and
4678
+ * limitations under the License.
4679
+ */
4680
+ var _SOLVE_TIME_MS = 500;
4681
+ var _EXPIRATION_TIME_MS = 60000;
4682
+ var _WIDGET_ID_START = 1000000000000;
4683
+ var MockReCaptcha = /** @class */ (function () {
4684
+ function MockReCaptcha(auth) {
4685
+ this.auth = auth;
4686
+ this.counter = _WIDGET_ID_START;
4687
+ this._widgets = new Map();
4688
+ }
4689
+ MockReCaptcha.prototype.render = function (container, parameters) {
4690
+ var id = this.counter;
4691
+ this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
4692
+ this.counter++;
4693
+ return id;
4694
+ };
4695
+ MockReCaptcha.prototype.reset = function (optWidgetId) {
4696
+ var _a;
4697
+ var id = optWidgetId || _WIDGET_ID_START;
4698
+ void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
4699
+ this._widgets.delete(id);
4700
+ };
4701
+ MockReCaptcha.prototype.getResponse = function (optWidgetId) {
4702
+ var _a;
4703
+ var id = optWidgetId || _WIDGET_ID_START;
4704
+ return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
4705
+ };
4706
+ MockReCaptcha.prototype.execute = function (optWidgetId) {
4707
+ var _a;
4708
+ return __awaiter(this, void 0, void 0, function () {
4709
+ var id;
4710
+ return __generator(this, function (_b) {
4711
+ id = optWidgetId || _WIDGET_ID_START;
4712
+ void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
4713
+ return [2 /*return*/, ''];
4714
+ });
4715
+ });
4716
+ };
4717
+ return MockReCaptcha;
4718
+ }());
4719
+ var MockGreCAPTCHATopLevel = /** @class */ (function () {
4720
+ function MockGreCAPTCHATopLevel() {
4721
+ this.enterprise = new MockGreCAPTCHA();
4722
+ }
4723
+ MockGreCAPTCHATopLevel.prototype.ready = function (callback) {
4724
+ callback();
4725
+ };
4726
+ MockGreCAPTCHATopLevel.prototype.execute = function (
4727
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4728
+ _siteKey, _options) {
4729
+ return Promise.resolve('token');
4730
+ };
4731
+ MockGreCAPTCHATopLevel.prototype.render = function (
4732
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4733
+ _container, _parameters) {
4734
+ return '';
4735
+ };
4736
+ return MockGreCAPTCHATopLevel;
4737
+ }());
4738
+ var MockGreCAPTCHA = /** @class */ (function () {
4739
+ function MockGreCAPTCHA() {
4740
+ }
4741
+ MockGreCAPTCHA.prototype.ready = function (callback) {
4742
+ callback();
4743
+ };
4744
+ MockGreCAPTCHA.prototype.execute = function (
4745
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4746
+ _siteKey, _options) {
4747
+ return Promise.resolve('token');
4748
+ };
4749
+ MockGreCAPTCHA.prototype.render = function (
4750
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
4751
+ _container, _parameters) {
4752
+ return '';
4753
+ };
4754
+ return MockGreCAPTCHA;
4755
+ }());
4756
+ var MockWidget = /** @class */ (function () {
4757
+ function MockWidget(containerOrId, appName, params) {
4758
+ var _this = this;
4759
+ this.params = params;
4760
+ this.timerId = null;
4761
+ this.deleted = false;
4762
+ this.responseToken = null;
4763
+ this.clickHandler = function () {
4764
+ _this.execute();
4765
+ };
4766
+ var container = typeof containerOrId === 'string'
4767
+ ? document.getElementById(containerOrId)
4768
+ : containerOrId;
4769
+ _assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName: appName });
4770
+ this.container = container;
4771
+ this.isVisible = this.params.size !== 'invisible';
4772
+ if (this.isVisible) {
4773
+ this.execute();
4774
+ }
4775
+ else {
4776
+ this.container.addEventListener('click', this.clickHandler);
4777
+ }
4778
+ }
4779
+ MockWidget.prototype.getResponse = function () {
4780
+ this.checkIfDeleted();
4781
+ return this.responseToken;
4782
+ };
4783
+ MockWidget.prototype.delete = function () {
4784
+ this.checkIfDeleted();
4785
+ this.deleted = true;
4786
+ if (this.timerId) {
4787
+ clearTimeout(this.timerId);
4788
+ this.timerId = null;
4789
+ }
4790
+ this.container.removeEventListener('click', this.clickHandler);
4791
+ };
4792
+ MockWidget.prototype.execute = function () {
4793
+ var _this = this;
4794
+ this.checkIfDeleted();
4795
+ if (this.timerId) {
4796
+ return;
4797
+ }
4798
+ this.timerId = window.setTimeout(function () {
4799
+ _this.responseToken = generateRandomAlphaNumericString(50);
4800
+ var _a = _this.params, callback = _a.callback, expiredCallback = _a["expired-callback"];
4801
+ if (callback) {
4802
+ try {
4803
+ callback(_this.responseToken);
4804
+ }
4805
+ catch (e) { }
4806
+ }
4807
+ _this.timerId = window.setTimeout(function () {
4808
+ _this.timerId = null;
4809
+ _this.responseToken = null;
4810
+ if (expiredCallback) {
4811
+ try {
4812
+ expiredCallback();
4813
+ }
4814
+ catch (e) { }
4815
+ }
4816
+ if (_this.isVisible) {
4817
+ _this.execute();
4818
+ }
4819
+ }, _EXPIRATION_TIME_MS);
4820
+ }, _SOLVE_TIME_MS);
4821
+ };
4822
+ MockWidget.prototype.checkIfDeleted = function () {
4823
+ if (this.deleted) {
4824
+ throw new Error('reCAPTCHA mock was already deleted!');
4825
+ }
4826
+ };
4827
+ return MockWidget;
4828
+ }());
4829
+ function generateRandomAlphaNumericString(len) {
4830
+ var chars = [];
4831
+ var allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
4832
+ for (var i = 0; i < len; i++) {
4833
+ chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
4834
+ }
4835
+ return chars.join('');
4836
+ }
4837
+
4654
4838
  /* eslint-disable @typescript-eslint/no-require-imports */
4655
4839
  var RECAPTCHA_ENTERPRISE_VERIFIER_TYPE = 'recaptcha-enterprise';
4656
4840
  var FAKE_TOKEN = 'NO_RECAPTCHA';
@@ -4737,8 +4921,14 @@ var RecaptchaEnterpriseVerifier = /** @class */ (function () {
4737
4921
  reject(Error('No reCAPTCHA enterprise script loaded.'));
4738
4922
  }
4739
4923
  }
4924
+ var mockRecaptcha;
4740
4925
  var _this = this;
4741
4926
  return __generator(this, function (_a) {
4927
+ // Returns Promise for a mock token when appVerificationDisabledForTesting is true.
4928
+ if (this.auth.settings.appVerificationDisabledForTesting) {
4929
+ mockRecaptcha = new MockGreCAPTCHATopLevel();
4930
+ return [2 /*return*/, mockRecaptcha.execute('siteKey', { action: 'verify' })];
4931
+ }
4742
4932
  return [2 /*return*/, new Promise(function (resolve, reject) {
4743
4933
  retrieveSiteKey(_this.auth)
4744
4934
  .then(function (siteKey) {
@@ -4772,15 +4962,18 @@ var RecaptchaEnterpriseVerifier = /** @class */ (function () {
4772
4962
  };
4773
4963
  return RecaptchaEnterpriseVerifier;
4774
4964
  }());
4775
- function injectRecaptchaFields(auth, request, action, captchaResp) {
4776
- if (captchaResp === void 0) { captchaResp = false; }
4965
+ function injectRecaptchaFields(auth, request, action, isCaptchaResp, isFakeToken) {
4966
+ if (isCaptchaResp === void 0) { isCaptchaResp = false; }
4967
+ if (isFakeToken === void 0) { isFakeToken = false; }
4777
4968
  return __awaiter(this, void 0, void 0, function () {
4778
- var verifier, captchaResponse, newRequest;
4969
+ var verifier, captchaResponse, newRequest, phoneNumber, recaptchaToken, recaptchaToken;
4779
4970
  return __generator(this, function (_a) {
4780
4971
  switch (_a.label) {
4781
4972
  case 0:
4782
4973
  verifier = new RecaptchaEnterpriseVerifier(auth);
4783
- _a.label = 1;
4974
+ if (!isFakeToken) return [3 /*break*/, 1];
4975
+ captchaResponse = FAKE_TOKEN;
4976
+ return [3 /*break*/, 5];
4784
4977
  case 1:
4785
4978
  _a.trys.push([1, 3, , 5]);
4786
4979
  return [4 /*yield*/, verifier.verify(action)];
@@ -4795,7 +4988,35 @@ function injectRecaptchaFields(auth, request, action, captchaResp) {
4795
4988
  return [3 /*break*/, 5];
4796
4989
  case 5:
4797
4990
  newRequest = __assign({}, request);
4798
- if (!captchaResp) {
4991
+ if (action === "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */ ||
4992
+ action === "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */) {
4993
+ if ('phoneEnrollmentInfo' in newRequest) {
4994
+ phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
4995
+ recaptchaToken = newRequest.phoneEnrollmentInfo.recaptchaToken;
4996
+ Object.assign(newRequest, {
4997
+ 'phoneEnrollmentInfo': {
4998
+ phoneNumber: phoneNumber,
4999
+ recaptchaToken: recaptchaToken,
5000
+ captchaResponse: captchaResponse,
5001
+ 'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
5002
+ 'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
5003
+ }
5004
+ });
5005
+ }
5006
+ else if ('phoneSignInInfo' in newRequest) {
5007
+ recaptchaToken = newRequest.phoneSignInInfo.recaptchaToken;
5008
+ Object.assign(newRequest, {
5009
+ 'phoneSignInInfo': {
5010
+ recaptchaToken: recaptchaToken,
5011
+ captchaResponse: captchaResponse,
5012
+ 'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
5013
+ 'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
5014
+ }
5015
+ });
5016
+ }
5017
+ return [2 /*return*/, newRequest];
5018
+ }
5019
+ if (!isCaptchaResp) {
4799
5020
  Object.assign(newRequest, { captchaResponse: captchaResponse });
4800
5021
  }
4801
5022
  else {
@@ -4810,19 +5031,20 @@ function injectRecaptchaFields(auth, request, action, captchaResp) {
4810
5031
  });
4811
5032
  });
4812
5033
  }
4813
- function handleRecaptchaFlow(authInstance, request, actionName, actionMethod) {
4814
- var _a;
5034
+ function handleRecaptchaFlow(authInstance, request, actionName, actionMethod, recaptchaAuthProvider) {
5035
+ var _a, _b;
4815
5036
  return __awaiter(this, void 0, void 0, function () {
4816
- var requestWithRecaptcha;
5037
+ var requestWithRecaptcha, requestWithRecaptcha, requestWithRecaptchaFields;
4817
5038
  var _this = this;
4818
- return __generator(this, function (_b) {
4819
- switch (_b.label) {
5039
+ return __generator(this, function (_c) {
5040
+ switch (_c.label) {
4820
5041
  case 0:
5042
+ if (!(recaptchaAuthProvider === "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)) return [3 /*break*/, 4];
4821
5043
  if (!((_a = authInstance
4822
- ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaProvider.EMAIL_PASSWORD_PROVIDER */))) return [3 /*break*/, 2];
5044
+ ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */))) return [3 /*break*/, 2];
4823
5045
  return [4 /*yield*/, injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */)];
4824
5046
  case 1:
4825
- requestWithRecaptcha = _b.sent();
5047
+ requestWithRecaptcha = _c.sent();
4826
5048
  return [2 /*return*/, actionMethod(authInstance, requestWithRecaptcha)];
4827
5049
  case 2: return [2 /*return*/, actionMethod(authInstance, request).catch(function (error) { return __awaiter(_this, void 0, void 0, function () {
4828
5050
  var requestWithRecaptcha;
@@ -4839,6 +5061,48 @@ function handleRecaptchaFlow(authInstance, request, actionName, actionMethod) {
4839
5061
  }
4840
5062
  });
4841
5063
  }); })];
5064
+ case 3: return [3 /*break*/, 10];
5065
+ case 4:
5066
+ if (!(recaptchaAuthProvider === "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) return [3 /*break*/, 9];
5067
+ if (!((_b = authInstance
5068
+ ._getRecaptchaConfig()) === null || _b === void 0 ? void 0 : _b.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */))) return [3 /*break*/, 6];
5069
+ return [4 /*yield*/, injectRecaptchaFields(authInstance, request, actionName)];
5070
+ case 5:
5071
+ requestWithRecaptcha = _c.sent();
5072
+ return [2 /*return*/, actionMethod(authInstance, requestWithRecaptcha).catch(function (error) { return __awaiter(_this, void 0, void 0, function () {
5073
+ var requestWithRecaptchaFields;
5074
+ var _a;
5075
+ return __generator(this, function (_b) {
5076
+ switch (_b.label) {
5077
+ case 0:
5078
+ if (!(((_a = authInstance
5079
+ ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.getProviderEnforcementState("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) === "AUDIT" /* EnforcementState.AUDIT */)) return [3 /*break*/, 2];
5080
+ if (!(error.code === "auth/".concat("missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */) ||
5081
+ error.code === "auth/".concat("invalid-app-credential" /* AuthErrorCode.INVALID_APP_CREDENTIAL */))) return [3 /*break*/, 2];
5082
+ console.log("Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ".concat(actionName, " flow."));
5083
+ return [4 /*yield*/, injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
5084
+ true // isFakeToken
5085
+ )];
5086
+ case 1:
5087
+ requestWithRecaptchaFields = _b.sent();
5088
+ // This will call the PhoneApiCaller to fetch and inject reCAPTCHA v2 token.
5089
+ return [2 /*return*/, actionMethod(authInstance, requestWithRecaptchaFields)];
5090
+ case 2:
5091
+ // ENFORCE mode or AUDIT mode with any other error.
5092
+ return [2 /*return*/, Promise.reject(error)];
5093
+ }
5094
+ });
5095
+ }); })];
5096
+ case 6: return [4 /*yield*/, injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
5097
+ true // isFakeToken
5098
+ )];
5099
+ case 7:
5100
+ requestWithRecaptchaFields = _c.sent();
5101
+ // This will call the PhoneApiCaller to fetch and inject v2 token.
5102
+ return [2 /*return*/, actionMethod(authInstance, requestWithRecaptchaFields)];
5103
+ case 8: return [3 /*break*/, 10];
5104
+ case 9: return [2 /*return*/, Promise.reject(recaptchaAuthProvider + ' provider is not supported.')];
5105
+ case 10: return [2 /*return*/];
4842
5106
  }
4843
5107
  });
4844
5108
  });
@@ -4863,7 +5127,7 @@ function _initializeRecaptchaConfig(auth) {
4863
5127
  else {
4864
5128
  authInternal._tenantRecaptchaConfigs[authInternal.tenantId] = config;
4865
5129
  }
4866
- if (config.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaProvider.EMAIL_PASSWORD_PROVIDER */)) {
5130
+ if (config.isAnyProviderEnabled()) {
4867
5131
  verifier = new RecaptchaEnterpriseVerifier(authInternal);
4868
5132
  void verifier.verify();
4869
5133
  }
@@ -5349,7 +5613,7 @@ var EmailAuthCredential = /** @class */ (function (_super) {
5349
5613
  password: this._password,
5350
5614
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
5351
5615
  };
5352
- return [2 /*return*/, handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword)];
5616
+ return [2 /*return*/, handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)];
5353
5617
  case "emailLink" /* SignInMethod.EMAIL_LINK */:
5354
5618
  return [2 /*return*/, signInWithEmailLink$1(auth, {
5355
5619
  email: this._email,
@@ -5376,7 +5640,7 @@ var EmailAuthCredential = /** @class */ (function (_super) {
5376
5640
  password: this._password,
5377
5641
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
5378
5642
  };
5379
- return [2 /*return*/, handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword)];
5643
+ return [2 /*return*/, handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)];
5380
5644
  case "emailLink" /* SignInMethod.EMAIL_LINK */:
5381
5645
  return [2 /*return*/, signInWithEmailLinkForLinking(auth, {
5382
5646
  idToken: idToken,
@@ -7619,7 +7883,7 @@ function sendPasswordResetEmail(auth, email, actionCodeSettings) {
7619
7883
  if (actionCodeSettings) {
7620
7884
  _setActionCodeSettingsOnRequest(authInternal, request, actionCodeSettings);
7621
7885
  }
7622
- return [4 /*yield*/, handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1)];
7886
+ return [4 /*yield*/, handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)];
7623
7887
  case 1:
7624
7888
  _a.sent();
7625
7889
  return [2 /*return*/];
@@ -7795,7 +8059,7 @@ function createUserWithEmailAndPassword(auth, email, password) {
7795
8059
  password: password,
7796
8060
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
7797
8061
  };
7798
- signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp);
8062
+ signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
7799
8063
  return [4 /*yield*/, signUpResponse.catch(function (error) {
7800
8064
  if (error.code === "auth/".concat("password-does-not-meet-requirements" /* AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS */)) {
7801
8065
  void recachePasswordPolicy(auth);
@@ -7926,7 +8190,7 @@ function sendSignInLinkToEmail(auth, email, actionCodeSettings) {
7926
8190
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
7927
8191
  };
7928
8192
  setActionCodeSettings(request, actionCodeSettings);
7929
- return [4 /*yield*/, handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1)];
8193
+ return [4 /*yield*/, handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)];
7930
8194
  case 1:
7931
8195
  _a.sent();
7932
8196
  return [2 /*return*/];
@@ -9054,7 +9318,7 @@ function multiFactor(user) {
9054
9318
  }
9055
9319
 
9056
9320
  var name = "@firebase/auth";
9057
- var version = "1.7.9-canary.aa6db78eb";
9321
+ var version = "1.7.9-canary.b942e9e6e";
9058
9322
 
9059
9323
  /**
9060
9324
  * @license
@@ -11245,5 +11509,5 @@ function generateNoEvent() {
11245
11509
  };
11246
11510
  }
11247
11511
 
11248
- export { signInWithEmailAndPassword as $, ActionCodeOperation as A, PhoneAuthCredential as B, inMemoryPersistence as C, EmailAuthProvider as D, EmailAuthCredential as E, FactorId as F, FacebookAuthProvider as G, GoogleAuthProvider as H, GithubAuthProvider as I, OAuthProvider as J, SAMLAuthProvider as K, signInAnonymously as L, signInWithCredential as M, linkWithCredential as N, OperationType as O, ProviderId as P, reauthenticateWithCredential as Q, signInWithCustomToken as R, SignInMethod as S, TwitterAuthProvider as T, sendPasswordResetEmail as U, confirmPasswordReset as V, applyActionCode as W, checkActionCode as X, verifyPasswordResetCode as Y, createUserWithEmailAndPassword as Z, _signInWithRedirect as _, _reauthenticateWithRedirect as a, _setExternalJSProvider as a$, sendSignInLinkToEmail as a0, isSignInWithEmailLink as a1, signInWithEmailLink as a2, fetchSignInMethodsForEmail as a3, sendEmailVerification as a4, verifyBeforeUpdateEmail as a5, ActionCodeURL as a6, parseActionCodeURL as a7, updateProfile as a8, updateEmail as a9, _link$1 as aA, debugAssert as aB, _generateEventId as aC, AbstractPopupRedirectOperation as aD, _assertInstanceOf as aE, _withDefaultResolver as aF, FederatedAuthProvider as aG, _fail as aH, _getProjectConfig as aI, _getCurrentUrl as aJ, _gapiScriptUrl as aK, _emulatorUrl as aL, _isChromeIOS as aM, _isFirefox as aN, _isIOSStandalone as aO, _getRedirectUrl as aP, _setWindowLocation as aQ, _isMobileBrowser as aR, _isSafari as aS, _isIOS as aT, _getRedirectResult as aU, _overrideRedirectResult as aV, AuthEventManager as aW, debugFail as aX, finalizeEnrollPhoneMfa as aY, finalizeEnrollTotpMfa as aZ, startEnrollTotpMfa as a_, updatePassword as aa, getIdToken as ab, getIdTokenResult as ac, unlink as ad, getAdditionalUserInfo as ae, reload as af, getMultiFactorResolver as ag, multiFactor as ah, _performApiRequest as ai, _addTidIfNecessary as aj, _assert as ak, Delay as al, _window as am, isV2 as an, _createError as ao, _recaptchaV2ScriptUrl as ap, _loadJS as aq, _generateCallbackName as ar, getRecaptchaParams as as, _isHttpOrHttps as at, _isWorker as au, _castAuth as av, _serverAppCurrentUserOperationNotSupportedError as aw, _assertLinkedStatus as ax, sendPhoneVerificationCode as ay, startEnrollPhoneMfa as az, _linkWithRedirect as b, _persistenceKeyName as b0, UserImpl as b1, _getInstance as b2, AuthImpl as b3, _getClientVersion as b4, FetchProvider as b5, SAMLAuthCredential as b6, signInWithRedirect as b7, linkWithRedirect as b8, reauthenticateWithRedirect as b9, indexedDBLocalPersistence as c, cordovaPopupRedirectResolver as d, browserLocalPersistence as e, browserSessionPersistence as f, getRedirectResult as g, initializeRecaptchaConfig as h, initializeAuth as i, beforeAuthStateChanged as j, onAuthStateChanged as k, updateCurrentUser as l, signOut as m, revokeAccessToken as n, onIdTokenChanged as o, deleteUser as p, debugErrorMap as q, registerAuth as r, setPersistence as s, prodErrorMap as t, useDeviceLanguage as u, validatePassword as v, AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY as w, connectAuthEmulator as x, AuthCredential as y, OAuthCredential as z };
11249
- //# sourceMappingURL=popup_redirect-1e109c2a.js.map
11512
+ export { signInWithEmailAndPassword as $, ActionCodeOperation as A, PhoneAuthCredential as B, inMemoryPersistence as C, EmailAuthProvider as D, EmailAuthCredential as E, FactorId as F, FacebookAuthProvider as G, GoogleAuthProvider as H, GithubAuthProvider as I, OAuthProvider as J, SAMLAuthProvider as K, signInAnonymously as L, signInWithCredential as M, linkWithCredential as N, OperationType as O, ProviderId as P, reauthenticateWithCredential as Q, signInWithCustomToken as R, SignInMethod as S, TwitterAuthProvider as T, sendPasswordResetEmail as U, confirmPasswordReset as V, applyActionCode as W, checkActionCode as X, verifyPasswordResetCode as Y, createUserWithEmailAndPassword as Z, _signInWithRedirect as _, _reauthenticateWithRedirect as a, debugFail as a$, sendSignInLinkToEmail as a0, isSignInWithEmailLink as a1, signInWithEmailLink as a2, fetchSignInMethodsForEmail as a3, sendEmailVerification as a4, verifyBeforeUpdateEmail as a5, ActionCodeURL as a6, parseActionCodeURL as a7, updateProfile as a8, updateEmail as a9, _initializeRecaptchaConfig as aA, _link$1 as aB, sendPhoneVerificationCode as aC, FAKE_TOKEN as aD, startEnrollPhoneMfa as aE, debugAssert as aF, _generateEventId as aG, AbstractPopupRedirectOperation as aH, _assertInstanceOf as aI, _withDefaultResolver as aJ, FederatedAuthProvider as aK, _fail as aL, _getProjectConfig as aM, _getCurrentUrl as aN, _gapiScriptUrl as aO, _emulatorUrl as aP, _isChromeIOS as aQ, _isFirefox as aR, _isIOSStandalone as aS, _getRedirectUrl as aT, _setWindowLocation as aU, _isMobileBrowser as aV, _isSafari as aW, _isIOS as aX, _getRedirectResult as aY, _overrideRedirectResult as aZ, AuthEventManager as a_, updatePassword as aa, getIdToken as ab, getIdTokenResult as ac, unlink as ad, getAdditionalUserInfo as ae, reload as af, getMultiFactorResolver as ag, multiFactor as ah, _performApiRequest as ai, _addTidIfNecessary as aj, Delay as ak, _window as al, _assert as am, isV2 as an, _createError as ao, _recaptchaV2ScriptUrl as ap, _loadJS as aq, MockReCaptcha as ar, _generateCallbackName as as, getRecaptchaParams as at, _isHttpOrHttps as au, _isWorker as av, _castAuth as aw, _serverAppCurrentUserOperationNotSupportedError as ax, _assertLinkedStatus as ay, handleRecaptchaFlow as az, _linkWithRedirect as b, finalizeEnrollPhoneMfa as b0, finalizeEnrollTotpMfa as b1, startEnrollTotpMfa as b2, _setExternalJSProvider as b3, _persistenceKeyName as b4, UserImpl as b5, _getInstance as b6, AuthImpl as b7, _getClientVersion as b8, FetchProvider as b9, SAMLAuthCredential as ba, signInWithRedirect as bb, linkWithRedirect as bc, reauthenticateWithRedirect as bd, indexedDBLocalPersistence as c, cordovaPopupRedirectResolver as d, browserLocalPersistence as e, browserSessionPersistence as f, getRedirectResult as g, initializeRecaptchaConfig as h, initializeAuth as i, beforeAuthStateChanged as j, onAuthStateChanged as k, updateCurrentUser as l, signOut as m, revokeAccessToken as n, onIdTokenChanged as o, deleteUser as p, debugErrorMap as q, registerAuth as r, setPersistence as s, prodErrorMap as t, useDeviceLanguage as u, validatePassword as v, AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY as w, connectAuthEmulator as x, AuthCredential as y, OAuthCredential as z };
11513
+ //# sourceMappingURL=popup_redirect-63b3580d.js.map