@firebase/auth 1.7.9 → 1.8.0

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 (435) 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-e2e765e6.js → index-b60d3212.js} +393 -176
  5. package/dist/browser-cjs/index-b60d3212.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/cordova/auth-cordova-public.d.ts +7 -0
  17. package/dist/cordova/auth-cordova.d.ts +7 -0
  18. package/dist/cordova/index.js +6 -7
  19. package/dist/cordova/index.js.map +1 -1
  20. package/dist/cordova/internal.js +660 -985
  21. package/dist/cordova/internal.js.map +1 -1
  22. package/dist/cordova/popup_redirect-6fcd583a.js +9635 -0
  23. package/dist/cordova/popup_redirect-6fcd583a.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/{esm5/src/api/account_management/mfa.test.d.ts → cordova/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
  33. package/dist/esm2017/{index-68602d24.js → index-a7d5cfcc.js} +393 -176
  34. package/dist/esm2017/index-a7d5cfcc.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/{esm5/src/api/account_management/email_and_password.test.d.ts → esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
  46. package/dist/index.webworker.js +7912 -0
  47. package/dist/index.webworker.js.map +1 -0
  48. package/dist/node/index.js +2 -3
  49. package/dist/node/index.js.map +1 -1
  50. package/dist/node/internal.js +555 -844
  51. package/dist/node/internal.js.map +1 -1
  52. package/dist/node/src/api/account_management/mfa.d.ts +5 -1
  53. package/dist/node/src/api/authentication/mfa.d.ts +5 -1
  54. package/dist/node/src/api/authentication/sms.d.ts +5 -1
  55. package/dist/node/src/api/index.d.ts +7 -3
  56. package/dist/node/src/platform_browser/providers/phone.d.ts +7 -5
  57. package/dist/node/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  58. package/dist/node/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  59. package/dist/node/src/platform_browser/strategies/phone.d.ts +10 -6
  60. package/dist/node/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  61. package/dist/node/totp-ab108bed.js +7582 -0
  62. package/dist/node/totp-ab108bed.js.map +1 -0
  63. package/dist/node-esm/index.js +1 -2
  64. package/dist/node-esm/index.js.map +1 -1
  65. package/dist/node-esm/internal.js +2 -3
  66. package/dist/node-esm/internal.js.map +1 -1
  67. package/dist/node-esm/src/api/account_management/mfa.d.ts +5 -1
  68. package/dist/node-esm/src/api/authentication/mfa.d.ts +5 -1
  69. package/dist/node-esm/src/api/authentication/sms.d.ts +5 -1
  70. package/dist/node-esm/src/api/index.d.ts +7 -3
  71. package/dist/node-esm/src/platform_browser/providers/phone.d.ts +7 -5
  72. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  73. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  74. package/dist/node-esm/src/platform_browser/strategies/phone.d.ts +10 -6
  75. package/dist/{esm5/scripts/run_node_tests.d.ts → node-esm/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
  76. package/dist/node-esm/{totp-219bb96f.js → totp-f311e20a.js} +170 -33
  77. package/dist/node-esm/totp-f311e20a.js.map +1 -0
  78. package/dist/rn/index-4d73adbf.js +8575 -0
  79. package/dist/rn/index-4d73adbf.js.map +1 -0
  80. package/dist/rn/index.js +45 -55
  81. package/dist/rn/index.js.map +1 -1
  82. package/dist/rn/internal.js +1195 -1890
  83. package/dist/rn/internal.js.map +1 -1
  84. package/dist/rn/src/api/account_management/mfa.d.ts +5 -1
  85. package/dist/rn/src/api/authentication/mfa.d.ts +5 -1
  86. package/dist/rn/src/api/authentication/sms.d.ts +5 -1
  87. package/dist/rn/src/api/index.d.ts +7 -3
  88. package/dist/rn/src/platform_browser/providers/phone.d.ts +7 -5
  89. package/dist/rn/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  90. package/dist/rn/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  91. package/dist/rn/src/platform_browser/strategies/phone.d.ts +10 -6
  92. package/dist/rn/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  93. package/dist/src/api/account_management/mfa.d.ts +5 -1
  94. package/dist/src/api/authentication/mfa.d.ts +5 -1
  95. package/dist/src/api/authentication/sms.d.ts +5 -1
  96. package/dist/src/api/index.d.ts +7 -3
  97. package/dist/src/platform_browser/providers/phone.d.ts +7 -5
  98. package/dist/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  99. package/dist/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  100. package/dist/src/platform_browser/strategies/phone.d.ts +10 -6
  101. package/dist/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  102. package/dist/web-extension-cjs/index.js +1 -1
  103. package/dist/web-extension-cjs/internal.js +115 -147
  104. package/dist/web-extension-cjs/internal.js.map +1 -1
  105. package/dist/web-extension-cjs/{register-674a8250.js → register-17c71bd5.js} +284 -31
  106. package/dist/web-extension-cjs/register-17c71bd5.js.map +1 -0
  107. package/dist/web-extension-cjs/src/api/account_management/mfa.d.ts +5 -1
  108. package/dist/web-extension-cjs/src/api/authentication/mfa.d.ts +5 -1
  109. package/dist/web-extension-cjs/src/api/authentication/sms.d.ts +5 -1
  110. package/dist/web-extension-cjs/src/api/index.d.ts +7 -3
  111. package/dist/web-extension-cjs/src/platform_browser/providers/phone.d.ts +7 -5
  112. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  113. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  114. package/dist/web-extension-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
  115. package/dist/web-extension-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  116. package/dist/web-extension-esm2017/auth-web-extension-public.d.ts +7 -0
  117. package/dist/web-extension-esm2017/auth-web-extension.d.ts +7 -0
  118. package/dist/web-extension-esm2017/index.js +2 -2
  119. package/dist/web-extension-esm2017/internal.js +115 -147
  120. package/dist/web-extension-esm2017/internal.js.map +1 -1
  121. package/dist/web-extension-esm2017/{register-428f8789.js → register-77f1d56a.js} +281 -32
  122. package/dist/web-extension-esm2017/register-77f1d56a.js.map +1 -0
  123. package/dist/web-extension-esm2017/src/api/account_management/mfa.d.ts +5 -1
  124. package/dist/web-extension-esm2017/src/api/authentication/mfa.d.ts +5 -1
  125. package/dist/web-extension-esm2017/src/api/authentication/sms.d.ts +5 -1
  126. package/dist/web-extension-esm2017/src/api/index.d.ts +7 -3
  127. package/dist/web-extension-esm2017/src/platform_browser/providers/phone.d.ts +7 -5
  128. package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  129. package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  130. package/dist/web-extension-esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
  131. package/dist/web-extension-esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  132. package/internal/package.json +5 -3
  133. package/package.json +10 -11
  134. package/dist/browser-cjs/index-e2e765e6.js.map +0 -1
  135. package/dist/cordova/popup_redirect-abcbab4c.js +0 -11249
  136. package/dist/cordova/popup_redirect-abcbab4c.js.map +0 -1
  137. package/dist/esm2017/index-68602d24.js.map +0 -1
  138. package/dist/esm5/index-c0803b14.js +0 -12741
  139. package/dist/esm5/index-c0803b14.js.map +0 -1
  140. package/dist/esm5/index.cordova.d.ts +0 -32
  141. package/dist/esm5/index.d.ts +0 -37
  142. package/dist/esm5/index.doc.d.ts +0 -24
  143. package/dist/esm5/index.js +0 -7
  144. package/dist/esm5/index.js.map +0 -1
  145. package/dist/esm5/index.node.d.ts +0 -17
  146. package/dist/esm5/index.rn.d.ts +0 -40
  147. package/dist/esm5/index.shared.d.ts +0 -19
  148. package/dist/esm5/index.web-extension.d.ts +0 -31
  149. package/dist/esm5/index.webworker.d.ts +0 -21
  150. package/dist/esm5/internal/index.d.ts +0 -42
  151. package/dist/esm5/internal.js +0 -682
  152. package/dist/esm5/internal.js.map +0 -1
  153. package/dist/esm5/src/api/account_management/account.d.ts +0 -59
  154. package/dist/esm5/src/api/account_management/account.test.d.ts +0 -17
  155. package/dist/esm5/src/api/account_management/email_and_password.d.ts +0 -49
  156. package/dist/esm5/src/api/account_management/mfa.d.ts +0 -103
  157. package/dist/esm5/src/api/account_management/profile.d.ts +0 -29
  158. package/dist/esm5/src/api/account_management/profile.test.d.ts +0 -17
  159. package/dist/esm5/src/api/authentication/create_auth_uri.d.ts +0 -26
  160. package/dist/esm5/src/api/authentication/create_auth_uri.test.d.ts +0 -17
  161. package/dist/esm5/src/api/authentication/custom_token.d.ts +0 -26
  162. package/dist/esm5/src/api/authentication/custom_token.test.d.ts +0 -17
  163. package/dist/esm5/src/api/authentication/email_and_password.d.ts +0 -85
  164. package/dist/esm5/src/api/authentication/email_and_password.test.d.ts +0 -17
  165. package/dist/esm5/src/api/authentication/email_link.d.ts +0 -32
  166. package/dist/esm5/src/api/authentication/email_link.test.d.ts +0 -17
  167. package/dist/esm5/src/api/authentication/idp.d.ts +0 -40
  168. package/dist/esm5/src/api/authentication/idp.test.d.ts +0 -17
  169. package/dist/esm5/src/api/authentication/mfa.d.ts +0 -69
  170. package/dist/esm5/src/api/authentication/mfa.test.d.ts +0 -17
  171. package/dist/esm5/src/api/authentication/recaptcha.d.ts +0 -34
  172. package/dist/esm5/src/api/authentication/recaptcha.test.d.ts +0 -17
  173. package/dist/esm5/src/api/authentication/sign_up.d.ts +0 -34
  174. package/dist/esm5/src/api/authentication/sign_up.test.d.ts +0 -17
  175. package/dist/esm5/src/api/authentication/sms.d.ts +0 -50
  176. package/dist/esm5/src/api/authentication/sms.test.d.ts +0 -17
  177. package/dist/esm5/src/api/authentication/token.d.ts +0 -37
  178. package/dist/esm5/src/api/authentication/token.test.d.ts +0 -17
  179. package/dist/esm5/src/api/errors.d.ts +0 -128
  180. package/dist/esm5/src/api/index.d.ts +0 -97
  181. package/dist/esm5/src/api/index.test.d.ts +0 -17
  182. package/dist/esm5/src/api/password_policy/get_password_policy.d.ts +0 -48
  183. package/dist/esm5/src/api/password_policy/get_password_policy.test.d.ts +0 -17
  184. package/dist/esm5/src/api/project_config/get_project_config.d.ts +0 -25
  185. package/dist/esm5/src/api/project_config/get_project_config.test.d.ts +0 -17
  186. package/dist/esm5/src/core/action_code_url.d.ts +0 -73
  187. package/dist/esm5/src/core/action_code_url.test.d.ts +0 -17
  188. package/dist/esm5/src/core/auth/auth_event_manager.d.ts +0 -34
  189. package/dist/esm5/src/core/auth/auth_event_manager.test.d.ts +0 -17
  190. package/dist/esm5/src/core/auth/auth_impl.d.ts +0 -130
  191. package/dist/esm5/src/core/auth/auth_impl.test.d.ts +0 -17
  192. package/dist/esm5/src/core/auth/emulator.d.ts +0 -42
  193. package/dist/esm5/src/core/auth/emulator.test.d.ts +0 -17
  194. package/dist/esm5/src/core/auth/firebase_internal.d.ts +0 -35
  195. package/dist/esm5/src/core/auth/firebase_internal.test.d.ts +0 -17
  196. package/dist/esm5/src/core/auth/initialize.d.ts +0 -46
  197. package/dist/esm5/src/core/auth/initialize.test.d.ts +0 -17
  198. package/dist/esm5/src/core/auth/middleware.d.ts +0 -25
  199. package/dist/esm5/src/core/auth/middleware.test.d.ts +0 -17
  200. package/dist/esm5/src/core/auth/password_policy_impl.d.ts +0 -59
  201. package/dist/esm5/src/core/auth/password_policy_impl.test.d.ts +0 -17
  202. package/dist/esm5/src/core/auth/register.d.ts +0 -23
  203. package/dist/esm5/src/core/credentials/auth_credential.d.ts +0 -75
  204. package/dist/esm5/src/core/credentials/email.d.ts +0 -60
  205. package/dist/esm5/src/core/credentials/email.test.d.ts +0 -17
  206. package/dist/esm5/src/core/credentials/index.d.ts +0 -23
  207. package/dist/esm5/src/core/credentials/oauth.d.ts +0 -81
  208. package/dist/esm5/src/core/credentials/oauth.test.d.ts +0 -17
  209. package/dist/esm5/src/core/credentials/phone.d.ts +0 -52
  210. package/dist/esm5/src/core/credentials/phone.test.d.ts +0 -17
  211. package/dist/esm5/src/core/credentials/saml.d.ts +0 -52
  212. package/dist/esm5/src/core/credentials/saml.test.d.ts +0 -17
  213. package/dist/esm5/src/core/errors.d.ts +0 -325
  214. package/dist/esm5/src/core/errors.test.d.ts +0 -17
  215. package/dist/esm5/src/core/index.d.ts +0 -230
  216. package/dist/esm5/src/core/persistence/in_memory.d.ts +0 -35
  217. package/dist/esm5/src/core/persistence/in_memory.test.d.ts +0 -17
  218. package/dist/esm5/src/core/persistence/index.d.ts +0 -41
  219. package/dist/esm5/src/core/persistence/persistence_user_manager.d.ts +0 -45
  220. package/dist/esm5/src/core/persistence/persistence_user_manager.test.d.ts +0 -17
  221. package/dist/esm5/src/core/providers/email.d.ts +0 -83
  222. package/dist/esm5/src/core/providers/email.test.d.ts +0 -17
  223. package/dist/esm5/src/core/providers/facebook.d.ts +0 -93
  224. package/dist/esm5/src/core/providers/facebook.test.d.ts +0 -17
  225. package/dist/esm5/src/core/providers/federated.d.ts +0 -64
  226. package/dist/esm5/src/core/providers/federated.test.d.ts +0 -17
  227. package/dist/esm5/src/core/providers/github.d.ts +0 -89
  228. package/dist/esm5/src/core/providers/github.test.d.ts +0 -17
  229. package/dist/esm5/src/core/providers/google.d.ts +0 -96
  230. package/dist/esm5/src/core/providers/google.test.d.ts +0 -17
  231. package/dist/esm5/src/core/providers/oauth.d.ts +0 -151
  232. package/dist/esm5/src/core/providers/oauth.test.d.ts +0 -17
  233. package/dist/esm5/src/core/providers/saml.d.ts +0 -62
  234. package/dist/esm5/src/core/providers/saml.test.d.ts +0 -17
  235. package/dist/esm5/src/core/providers/twitter.d.ts +0 -103
  236. package/dist/esm5/src/core/providers/twitter.test.d.ts +0 -17
  237. package/dist/esm5/src/core/strategies/abstract_popup_redirect_operation.d.ts +0 -44
  238. package/dist/esm5/src/core/strategies/abstract_popup_redirect_operation.test.d.ts +0 -17
  239. package/dist/esm5/src/core/strategies/action_code_settings.d.ts +0 -19
  240. package/dist/esm5/src/core/strategies/action_code_settings.test.d.ts +0 -17
  241. package/dist/esm5/src/core/strategies/anonymous.d.ts +0 -32
  242. package/dist/esm5/src/core/strategies/anonymous.test.d.ts +0 -17
  243. package/dist/esm5/src/core/strategies/credential.d.ts +0 -64
  244. package/dist/esm5/src/core/strategies/credential.test.d.ts +0 -17
  245. package/dist/esm5/src/core/strategies/custom_token.d.ts +0 -37
  246. package/dist/esm5/src/core/strategies/custom_token.test.d.ts +0 -17
  247. package/dist/esm5/src/core/strategies/email.d.ts +0 -104
  248. package/dist/esm5/src/core/strategies/email.test.d.ts +0 -17
  249. package/dist/esm5/src/core/strategies/email_and_password.d.ts +0 -139
  250. package/dist/esm5/src/core/strategies/email_and_password.test.d.ts +0 -17
  251. package/dist/esm5/src/core/strategies/email_link.d.ts +0 -107
  252. package/dist/esm5/src/core/strategies/email_link.test.d.ts +0 -17
  253. package/dist/esm5/src/core/strategies/idp.d.ts +0 -32
  254. package/dist/esm5/src/core/strategies/idp.test.d.ts +0 -17
  255. package/dist/esm5/src/core/strategies/redirect.d.ts +0 -36
  256. package/dist/esm5/src/core/strategies/redirect.test.d.ts +0 -17
  257. package/dist/esm5/src/core/user/account_info.d.ts +0 -68
  258. package/dist/esm5/src/core/user/account_info.test.d.ts +0 -17
  259. package/dist/esm5/src/core/user/additional_user_info.d.ts +0 -31
  260. package/dist/esm5/src/core/user/additional_user_info.test.d.ts +0 -17
  261. package/dist/esm5/src/core/user/id_token_result.d.ts +0 -48
  262. package/dist/esm5/src/core/user/id_token_result.test.d.ts +0 -17
  263. package/dist/esm5/src/core/user/invalidation.d.ts +0 -18
  264. package/dist/esm5/src/core/user/invalidation.test.d.ts +0 -17
  265. package/dist/esm5/src/core/user/link_unlink.d.ts +0 -30
  266. package/dist/esm5/src/core/user/link_unlink.test.d.ts +0 -17
  267. package/dist/esm5/src/core/user/proactive_refresh.d.ts +0 -34
  268. package/dist/esm5/src/core/user/proactive_refresh.test.d.ts +0 -17
  269. package/dist/esm5/src/core/user/reauthenticate.d.ts +0 -20
  270. package/dist/esm5/src/core/user/reauthenticate.test.d.ts +0 -17
  271. package/dist/esm5/src/core/user/reload.d.ts +0 -29
  272. package/dist/esm5/src/core/user/reload.test.d.ts +0 -17
  273. package/dist/esm5/src/core/user/token_manager.d.ts +0 -50
  274. package/dist/esm5/src/core/user/token_manager.test.d.ts +0 -17
  275. package/dist/esm5/src/core/user/user_credential_impl.d.ts +0 -37
  276. package/dist/esm5/src/core/user/user_credential_impl.test.d.ts +0 -17
  277. package/dist/esm5/src/core/user/user_impl.d.ts +0 -74
  278. package/dist/esm5/src/core/user/user_impl.test.d.ts +0 -17
  279. package/dist/esm5/src/core/user/user_metadata.d.ts +0 -27
  280. package/dist/esm5/src/core/util/assert.d.ts +0 -94
  281. package/dist/esm5/src/core/util/assert.test.d.ts +0 -17
  282. package/dist/esm5/src/core/util/browser.d.ts +0 -50
  283. package/dist/esm5/src/core/util/browser.test.d.ts +0 -17
  284. package/dist/esm5/src/core/util/delay.d.ts +0 -31
  285. package/dist/esm5/src/core/util/delay.test.d.ts +0 -17
  286. package/dist/esm5/src/core/util/emulator.d.ts +0 -18
  287. package/dist/esm5/src/core/util/emulator.test.d.ts +0 -17
  288. package/dist/esm5/src/core/util/event_id.d.ts +0 -17
  289. package/dist/esm5/src/core/util/event_id.test.d.ts +0 -17
  290. package/dist/esm5/src/core/util/fetch_provider.d.ts +0 -25
  291. package/dist/esm5/src/core/util/handler.d.ts +0 -20
  292. package/dist/esm5/src/core/util/instantiator.d.ts +0 -28
  293. package/dist/esm5/src/core/util/instantiator.test.d.ts +0 -17
  294. package/dist/esm5/src/core/util/location.d.ts +0 -19
  295. package/dist/esm5/src/core/util/log.d.ts +0 -23
  296. package/dist/esm5/src/core/util/navigator.d.ts +0 -21
  297. package/dist/esm5/src/core/util/providers.d.ts +0 -23
  298. package/dist/esm5/src/core/util/resolver.d.ts +0 -25
  299. package/dist/esm5/src/core/util/time.d.ts +0 -17
  300. package/dist/esm5/src/core/util/validate_origin.d.ts +0 -18
  301. package/dist/esm5/src/core/util/validate_origin.test.d.ts +0 -17
  302. package/dist/esm5/src/core/util/version.d.ts +0 -31
  303. package/dist/esm5/src/core/util/version.test.d.ts +0 -17
  304. package/dist/esm5/src/index.d.ts +0 -18
  305. package/dist/esm5/src/mfa/assertions/totp.d.ts +0 -124
  306. package/dist/esm5/src/mfa/assertions/totp.test.d.ts +0 -17
  307. package/dist/esm5/src/mfa/index.d.ts +0 -18
  308. package/dist/esm5/src/mfa/mfa_assertion.d.ts +0 -27
  309. package/dist/esm5/src/mfa/mfa_error.d.ts +0 -35
  310. package/dist/esm5/src/mfa/mfa_info.d.ts +0 -36
  311. package/dist/esm5/src/mfa/mfa_info.test.d.ts +0 -17
  312. package/dist/esm5/src/mfa/mfa_resolver.d.ts +0 -41
  313. package/dist/esm5/src/mfa/mfa_resolver.test.d.ts +0 -17
  314. package/dist/esm5/src/mfa/mfa_session.d.ts +0 -39
  315. package/dist/esm5/src/mfa/mfa_session.test.d.ts +0 -17
  316. package/dist/esm5/src/mfa/mfa_user.d.ts +0 -38
  317. package/dist/esm5/src/mfa/mfa_user.test.d.ts +0 -17
  318. package/dist/esm5/src/model/application_verifier.d.ts +0 -23
  319. package/dist/esm5/src/model/auth.d.ts +0 -87
  320. package/dist/esm5/src/model/enum_maps.d.ts +0 -98
  321. package/dist/esm5/src/model/enums.d.ts +0 -74
  322. package/dist/esm5/src/model/id_token.d.ts +0 -87
  323. package/dist/esm5/src/model/password_policy.d.ts +0 -111
  324. package/dist/esm5/src/model/popup_redirect.d.ts +0 -94
  325. package/dist/esm5/src/model/public_types.d.ts +0 -1285
  326. package/dist/esm5/src/model/user.d.ts +0 -83
  327. package/dist/esm5/src/platform_browser/auth.test.d.ts +0 -17
  328. package/dist/esm5/src/platform_browser/auth_window.d.ts +0 -37
  329. package/dist/esm5/src/platform_browser/iframe/gapi.d.ts +0 -19
  330. package/dist/esm5/src/platform_browser/iframe/gapi.iframes.d.ts +0 -47
  331. package/dist/esm5/src/platform_browser/iframe/gapi.test.d.ts +0 -17
  332. package/dist/esm5/src/platform_browser/iframe/iframe.d.ts +0 -18
  333. package/dist/esm5/src/platform_browser/iframe/iframe.test.d.ts +0 -17
  334. package/dist/esm5/src/platform_browser/index.d.ts +0 -27
  335. package/dist/esm5/src/platform_browser/load_js.d.ts +0 -29
  336. package/dist/esm5/src/platform_browser/load_js.test.d.ts +0 -17
  337. package/dist/esm5/src/platform_browser/messagechannel/index.d.ts +0 -87
  338. package/dist/esm5/src/platform_browser/messagechannel/promise.d.ts +0 -33
  339. package/dist/esm5/src/platform_browser/messagechannel/promise.test.d.ts +0 -17
  340. package/dist/esm5/src/platform_browser/messagechannel/receiver.d.ts +0 -63
  341. package/dist/esm5/src/platform_browser/messagechannel/receiver.test.d.ts +0 -17
  342. package/dist/esm5/src/platform_browser/messagechannel/sender.d.ts +0 -46
  343. package/dist/esm5/src/platform_browser/messagechannel/sender.test.d.ts +0 -17
  344. package/dist/esm5/src/platform_browser/mfa/assertions/phone.d.ts +0 -59
  345. package/dist/esm5/src/platform_browser/mfa/assertions/phone.test.d.ts +0 -17
  346. package/dist/esm5/src/platform_browser/persistence/browser.d.ts +0 -27
  347. package/dist/esm5/src/platform_browser/persistence/browser.test.d.ts +0 -17
  348. package/dist/esm5/src/platform_browser/persistence/indexed_db.d.ts +0 -33
  349. package/dist/esm5/src/platform_browser/persistence/indexed_db.test.d.ts +0 -17
  350. package/dist/esm5/src/platform_browser/persistence/local_storage.d.ts +0 -25
  351. package/dist/esm5/src/platform_browser/persistence/local_storage.test.d.ts +0 -17
  352. package/dist/esm5/src/platform_browser/persistence/session_storage.d.ts +0 -24
  353. package/dist/esm5/src/platform_browser/persistence/session_storage.test.d.ts +0 -17
  354. package/dist/esm5/src/platform_browser/popup_redirect.d.ts +0 -27
  355. package/dist/esm5/src/platform_browser/popup_redirect.test.d.ts +0 -17
  356. package/dist/esm5/src/platform_browser/providers/phone.d.ts +0 -152
  357. package/dist/esm5/src/platform_browser/providers/phone.test.d.ts +0 -17
  358. package/dist/esm5/src/platform_browser/recaptcha/recaptcha.d.ts +0 -71
  359. package/dist/esm5/src/platform_browser/recaptcha/recaptcha.test.d.ts +0 -17
  360. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +0 -45
  361. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.test.d.ts +0 -17
  362. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_loader.d.ts +0 -49
  363. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_loader.test.d.ts +0 -17
  364. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_mock.d.ts +0 -66
  365. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_mock.test.d.ts +0 -17
  366. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +0 -92
  367. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_verifier.test.d.ts +0 -17
  368. package/dist/esm5/src/platform_browser/strategies/phone.d.ts +0 -112
  369. package/dist/esm5/src/platform_browser/strategies/phone.test.d.ts +0 -17
  370. package/dist/esm5/src/platform_browser/strategies/popup.d.ts +0 -109
  371. package/dist/esm5/src/platform_browser/strategies/popup.test.d.ts +0 -17
  372. package/dist/esm5/src/platform_browser/strategies/redirect.d.ts +0 -176
  373. package/dist/esm5/src/platform_browser/strategies/redirect.test.d.ts +0 -17
  374. package/dist/esm5/src/platform_browser/util/popup.d.ts +0 -24
  375. package/dist/esm5/src/platform_browser/util/popup.test.d.ts +0 -17
  376. package/dist/esm5/src/platform_browser/util/worker.d.ts +0 -20
  377. package/dist/esm5/src/platform_cordova/plugins.d.ts +0 -42
  378. package/dist/esm5/src/platform_cordova/popup_redirect/events.d.ts +0 -39
  379. package/dist/esm5/src/platform_cordova/popup_redirect/events.test.d.ts +0 -17
  380. package/dist/esm5/src/platform_cordova/popup_redirect/popup_redirect.d.ts +0 -24
  381. package/dist/esm5/src/platform_cordova/popup_redirect/popup_redirect.test.d.ts +0 -17
  382. package/dist/esm5/src/platform_cordova/popup_redirect/utils.d.ts +0 -47
  383. package/dist/esm5/src/platform_cordova/popup_redirect/utils.test.d.ts +0 -17
  384. package/dist/esm5/src/platform_cordova/strategies/redirect.d.ts +0 -20
  385. package/dist/esm5/src/platform_node/index.d.ts +0 -50
  386. package/dist/esm5/src/platform_react_native/persistence/react_native.d.ts +0 -25
  387. package/dist/esm5/src/platform_react_native/persistence/react_native.test.d.ts +0 -17
  388. package/dist/esm5/test/helpers/api/helper.d.ts +0 -22
  389. package/dist/esm5/test/helpers/delay.d.ts +0 -20
  390. package/dist/esm5/test/helpers/erroring_unavailable_persistence.d.ts +0 -36
  391. package/dist/esm5/test/helpers/fake_service_worker.d.ts +0 -22
  392. package/dist/esm5/test/helpers/id_token_response.d.ts +0 -18
  393. package/dist/esm5/test/helpers/iframe_event.d.ts +0 -19
  394. package/dist/esm5/test/helpers/integration/emulator_rest_helpers.d.ts +0 -35
  395. package/dist/esm5/test/helpers/integration/helpers.d.ts +0 -32
  396. package/dist/esm5/test/helpers/integration/settings.d.ts +0 -23
  397. package/dist/esm5/test/helpers/jwt.d.ts +0 -17
  398. package/dist/esm5/test/helpers/mock_auth.d.ts +0 -47
  399. package/dist/esm5/test/helpers/mock_auth_credential.d.ts +0 -31
  400. package/dist/esm5/test/helpers/mock_fetch.d.ts +0 -30
  401. package/dist/esm5/test/helpers/mock_fetch.test.d.ts +0 -17
  402. package/dist/esm5/test/helpers/mock_popup_redirect_resolver.d.ts +0 -24
  403. package/dist/esm5/test/helpers/redirect_persistence.d.ts +0 -24
  404. package/dist/esm5/test/helpers/timeout_stub.d.ts +0 -34
  405. package/dist/esm5/test/integration/flows/anonymous.test.d.ts +0 -17
  406. package/dist/esm5/test/integration/flows/custom.local.test.d.ts +0 -17
  407. package/dist/esm5/test/integration/flows/email.test.d.ts +0 -17
  408. package/dist/esm5/test/integration/flows/idp.local.test.d.ts +0 -17
  409. package/dist/esm5/test/integration/flows/middleware_test_generator.d.ts +0 -18
  410. package/dist/esm5/test/integration/flows/oob.local.test.d.ts +0 -17
  411. package/dist/esm5/test/integration/flows/password_policy.test.d.ts +0 -17
  412. package/dist/esm5/test/integration/flows/phone.test.d.ts +0 -17
  413. package/dist/esm5/test/integration/flows/totp.test.d.ts +0 -17
  414. package/dist/esm5/test/integration/webdriver/anonymous.test.d.ts +0 -17
  415. package/dist/esm5/test/integration/webdriver/compat/firebaseui.test.d.ts +0 -17
  416. package/dist/esm5/test/integration/webdriver/persistence.test.d.ts +0 -17
  417. package/dist/esm5/test/integration/webdriver/popup.test.d.ts +0 -17
  418. package/dist/esm5/test/integration/webdriver/redirect.test.d.ts +0 -17
  419. package/dist/esm5/test/integration/webdriver/util/auth_driver.d.ts +0 -46
  420. package/dist/esm5/test/integration/webdriver/util/functions.d.ts +0 -81
  421. package/dist/esm5/test/integration/webdriver/util/idp_page.d.ts +0 -31
  422. package/dist/esm5/test/integration/webdriver/util/js_load_condition.d.ts +0 -25
  423. package/dist/esm5/test/integration/webdriver/util/test_runner.d.ts +0 -19
  424. package/dist/esm5/test/integration/webdriver/util/test_server.d.ts +0 -27
  425. package/dist/esm5/test/integration/webdriver/util/ui_page.d.ts +0 -33
  426. package/dist/index.webworker.esm5.js +0 -9265
  427. package/dist/index.webworker.esm5.js.map +0 -1
  428. package/dist/node/totp-259483a2.js +0 -8762
  429. package/dist/node/totp-259483a2.js.map +0 -1
  430. package/dist/node-esm/totp-219bb96f.js.map +0 -1
  431. package/dist/rn/index-2f66320e.js +0 -9819
  432. package/dist/rn/index-2f66320e.js.map +0 -1
  433. package/dist/web-extension-cjs/register-674a8250.js.map +0 -1
  434. package/dist/web-extension-esm2017/register-428f8789.js.map +0 -1
  435. /package/dist/{esm5/test/integration/flows/firebaseserverapp.test.d.ts → browser-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts} +0 -0
@@ -1090,6 +1090,16 @@ class RecaptchaConfig {
1090
1090
  "ENFORCE" /* EnforcementState.ENFORCE */ ||
1091
1091
  this.getProviderEnforcementState(providerStr) === "AUDIT" /* EnforcementState.AUDIT */);
1092
1092
  }
1093
+ /**
1094
+ * Returns true if reCAPTCHA Enterprise protection is enabled in at least one provider, otherwise
1095
+ * returns false.
1096
+ *
1097
+ * @returns Whether or not reCAPTCHA Enterprise protection is enabled for at least one provider.
1098
+ */
1099
+ isAnyProviderEnabled() {
1100
+ return (this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) ||
1101
+ this.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */));
1102
+ }
1093
1103
  }
1094
1104
 
1095
1105
  /**
@@ -3177,6 +3187,167 @@ function _generateCallbackName(prefix) {
3177
3187
  return `__${prefix}${Math.floor(Math.random() * 1000000)}`;
3178
3188
  }
3179
3189
 
3190
+ /**
3191
+ * @license
3192
+ * Copyright 2020 Google LLC
3193
+ *
3194
+ * Licensed under the Apache License, Version 2.0 (the "License");
3195
+ * you may not use this file except in compliance with the License.
3196
+ * You may obtain a copy of the License at
3197
+ *
3198
+ * http://www.apache.org/licenses/LICENSE-2.0
3199
+ *
3200
+ * Unless required by applicable law or agreed to in writing, software
3201
+ * distributed under the License is distributed on an "AS IS" BASIS,
3202
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3203
+ * See the License for the specific language governing permissions and
3204
+ * limitations under the License.
3205
+ */
3206
+ const _SOLVE_TIME_MS = 500;
3207
+ const _EXPIRATION_TIME_MS = 60000;
3208
+ const _WIDGET_ID_START = 1000000000000;
3209
+ class MockReCaptcha {
3210
+ constructor(auth) {
3211
+ this.auth = auth;
3212
+ this.counter = _WIDGET_ID_START;
3213
+ this._widgets = new Map();
3214
+ }
3215
+ render(container, parameters) {
3216
+ const id = this.counter;
3217
+ this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
3218
+ this.counter++;
3219
+ return id;
3220
+ }
3221
+ reset(optWidgetId) {
3222
+ var _a;
3223
+ const id = optWidgetId || _WIDGET_ID_START;
3224
+ void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
3225
+ this._widgets.delete(id);
3226
+ }
3227
+ getResponse(optWidgetId) {
3228
+ var _a;
3229
+ const id = optWidgetId || _WIDGET_ID_START;
3230
+ return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
3231
+ }
3232
+ async execute(optWidgetId) {
3233
+ var _a;
3234
+ const id = optWidgetId || _WIDGET_ID_START;
3235
+ void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
3236
+ return '';
3237
+ }
3238
+ }
3239
+ class MockGreCAPTCHATopLevel {
3240
+ constructor() {
3241
+ this.enterprise = new MockGreCAPTCHA();
3242
+ }
3243
+ ready(callback) {
3244
+ callback();
3245
+ }
3246
+ execute(
3247
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3248
+ _siteKey, _options) {
3249
+ return Promise.resolve('token');
3250
+ }
3251
+ render(
3252
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3253
+ _container, _parameters) {
3254
+ return '';
3255
+ }
3256
+ }
3257
+ class MockGreCAPTCHA {
3258
+ ready(callback) {
3259
+ callback();
3260
+ }
3261
+ execute(
3262
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3263
+ _siteKey, _options) {
3264
+ return Promise.resolve('token');
3265
+ }
3266
+ render(
3267
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3268
+ _container, _parameters) {
3269
+ return '';
3270
+ }
3271
+ }
3272
+ class MockWidget {
3273
+ constructor(containerOrId, appName, params) {
3274
+ this.params = params;
3275
+ this.timerId = null;
3276
+ this.deleted = false;
3277
+ this.responseToken = null;
3278
+ this.clickHandler = () => {
3279
+ this.execute();
3280
+ };
3281
+ const container = typeof containerOrId === 'string'
3282
+ ? document.getElementById(containerOrId)
3283
+ : containerOrId;
3284
+ _assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName });
3285
+ this.container = container;
3286
+ this.isVisible = this.params.size !== 'invisible';
3287
+ if (this.isVisible) {
3288
+ this.execute();
3289
+ }
3290
+ else {
3291
+ this.container.addEventListener('click', this.clickHandler);
3292
+ }
3293
+ }
3294
+ getResponse() {
3295
+ this.checkIfDeleted();
3296
+ return this.responseToken;
3297
+ }
3298
+ delete() {
3299
+ this.checkIfDeleted();
3300
+ this.deleted = true;
3301
+ if (this.timerId) {
3302
+ clearTimeout(this.timerId);
3303
+ this.timerId = null;
3304
+ }
3305
+ this.container.removeEventListener('click', this.clickHandler);
3306
+ }
3307
+ execute() {
3308
+ this.checkIfDeleted();
3309
+ if (this.timerId) {
3310
+ return;
3311
+ }
3312
+ this.timerId = window.setTimeout(() => {
3313
+ this.responseToken = generateRandomAlphaNumericString(50);
3314
+ const { callback, 'expired-callback': expiredCallback } = this.params;
3315
+ if (callback) {
3316
+ try {
3317
+ callback(this.responseToken);
3318
+ }
3319
+ catch (e) { }
3320
+ }
3321
+ this.timerId = window.setTimeout(() => {
3322
+ this.timerId = null;
3323
+ this.responseToken = null;
3324
+ if (expiredCallback) {
3325
+ try {
3326
+ expiredCallback();
3327
+ }
3328
+ catch (e) { }
3329
+ }
3330
+ if (this.isVisible) {
3331
+ this.execute();
3332
+ }
3333
+ }, _EXPIRATION_TIME_MS);
3334
+ }, _SOLVE_TIME_MS);
3335
+ }
3336
+ checkIfDeleted() {
3337
+ if (this.deleted) {
3338
+ throw new Error('reCAPTCHA mock was already deleted!');
3339
+ }
3340
+ }
3341
+ }
3342
+ function generateRandomAlphaNumericString(len) {
3343
+ const chars = [];
3344
+ const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
3345
+ for (let i = 0; i < len; i++) {
3346
+ chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
3347
+ }
3348
+ return chars.join('');
3349
+ }
3350
+
3180
3351
  /* eslint-disable @typescript-eslint/no-require-imports */
3181
3352
  const RECAPTCHA_ENTERPRISE_VERIFIER_TYPE = 'recaptcha-enterprise';
3182
3353
  const FAKE_TOKEN = 'NO_RECAPTCHA';
@@ -3252,6 +3423,11 @@ class RecaptchaEnterpriseVerifier {
3252
3423
  reject(Error('No reCAPTCHA enterprise script loaded.'));
3253
3424
  }
3254
3425
  }
3426
+ // Returns Promise for a mock token when appVerificationDisabledForTesting is true.
3427
+ if (this.auth.settings.appVerificationDisabledForTesting) {
3428
+ const mockRecaptcha = new MockGreCAPTCHATopLevel();
3429
+ return mockRecaptcha.execute('siteKey', { action: 'verify' });
3430
+ }
3255
3431
  return new Promise((resolve, reject) => {
3256
3432
  retrieveSiteKey(this.auth)
3257
3433
  .then(siteKey => {
@@ -3282,17 +3458,50 @@ class RecaptchaEnterpriseVerifier {
3282
3458
  });
3283
3459
  }
3284
3460
  }
3285
- async function injectRecaptchaFields(auth, request, action, captchaResp = false) {
3461
+ async function injectRecaptchaFields(auth, request, action, isCaptchaResp = false, isFakeToken = false) {
3286
3462
  const verifier = new RecaptchaEnterpriseVerifier(auth);
3287
3463
  let captchaResponse;
3288
- try {
3289
- captchaResponse = await verifier.verify(action);
3464
+ if (isFakeToken) {
3465
+ captchaResponse = FAKE_TOKEN;
3290
3466
  }
3291
- catch (error) {
3292
- captchaResponse = await verifier.verify(action, true);
3467
+ else {
3468
+ try {
3469
+ captchaResponse = await verifier.verify(action);
3470
+ }
3471
+ catch (error) {
3472
+ captchaResponse = await verifier.verify(action, true);
3473
+ }
3293
3474
  }
3294
3475
  const newRequest = Object.assign({}, request);
3295
- if (!captchaResp) {
3476
+ if (action === "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */ ||
3477
+ action === "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */) {
3478
+ if ('phoneEnrollmentInfo' in newRequest) {
3479
+ const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
3480
+ const recaptchaToken = newRequest.phoneEnrollmentInfo.recaptchaToken;
3481
+ Object.assign(newRequest, {
3482
+ 'phoneEnrollmentInfo': {
3483
+ phoneNumber,
3484
+ recaptchaToken,
3485
+ captchaResponse,
3486
+ 'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
3487
+ 'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
3488
+ }
3489
+ });
3490
+ }
3491
+ else if ('phoneSignInInfo' in newRequest) {
3492
+ const recaptchaToken = newRequest.phoneSignInInfo.recaptchaToken;
3493
+ Object.assign(newRequest, {
3494
+ 'phoneSignInInfo': {
3495
+ recaptchaToken,
3496
+ captchaResponse,
3497
+ 'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
3498
+ 'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
3499
+ }
3500
+ });
3501
+ }
3502
+ return newRequest;
3503
+ }
3504
+ if (!isCaptchaResp) {
3296
3505
  Object.assign(newRequest, { captchaResponse });
3297
3506
  }
3298
3507
  else {
@@ -3304,24 +3513,64 @@ async function injectRecaptchaFields(auth, request, action, captchaResp = false)
3304
3513
  });
3305
3514
  return newRequest;
3306
3515
  }
3307
- async function handleRecaptchaFlow(authInstance, request, actionName, actionMethod) {
3308
- var _a;
3309
- if ((_a = authInstance
3310
- ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaProvider.EMAIL_PASSWORD_PROVIDER */)) {
3311
- const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
3312
- return actionMethod(authInstance, requestWithRecaptcha);
3516
+ async function handleRecaptchaFlow(authInstance, request, actionName, actionMethod, recaptchaAuthProvider) {
3517
+ var _a, _b;
3518
+ if (recaptchaAuthProvider === "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) {
3519
+ if ((_a = authInstance
3520
+ ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)) {
3521
+ const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
3522
+ return actionMethod(authInstance, requestWithRecaptcha);
3523
+ }
3524
+ else {
3525
+ return actionMethod(authInstance, request).catch(async (error) => {
3526
+ if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}`) {
3527
+ console.log(`${actionName} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);
3528
+ const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
3529
+ return actionMethod(authInstance, requestWithRecaptcha);
3530
+ }
3531
+ else {
3532
+ return Promise.reject(error);
3533
+ }
3534
+ });
3535
+ }
3313
3536
  }
3314
- else {
3315
- return actionMethod(authInstance, request).catch(async (error) => {
3316
- if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}`) {
3317
- console.log(`${actionName} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);
3318
- const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
3319
- return actionMethod(authInstance, requestWithRecaptcha);
3320
- }
3321
- else {
3537
+ else if (recaptchaAuthProvider === "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */) {
3538
+ if ((_b = authInstance
3539
+ ._getRecaptchaConfig()) === null || _b === void 0 ? void 0 : _b.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) {
3540
+ const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName);
3541
+ return actionMethod(authInstance, requestWithRecaptcha).catch(async (error) => {
3542
+ var _a;
3543
+ if (((_a = authInstance
3544
+ ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.getProviderEnforcementState("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) === "AUDIT" /* EnforcementState.AUDIT */) {
3545
+ // AUDIT mode
3546
+ if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}` ||
3547
+ error.code === `auth/${"invalid-app-credential" /* AuthErrorCode.INVALID_APP_CREDENTIAL */}`) {
3548
+ console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${actionName} flow.`);
3549
+ // reCAPTCHA Enterprise token is missing or reCAPTCHA Enterprise token
3550
+ // check fails.
3551
+ // Fallback to reCAPTCHA v2 flow.
3552
+ const requestWithRecaptchaFields = await injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
3553
+ true // isFakeToken
3554
+ );
3555
+ // This will call the PhoneApiCaller to fetch and inject reCAPTCHA v2 token.
3556
+ return actionMethod(authInstance, requestWithRecaptchaFields);
3557
+ }
3558
+ }
3559
+ // ENFORCE mode or AUDIT mode with any other error.
3322
3560
  return Promise.reject(error);
3323
- }
3324
- });
3561
+ });
3562
+ }
3563
+ else {
3564
+ // Do reCAPTCHA v2 flow.
3565
+ const requestWithRecaptchaFields = await injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
3566
+ true // isFakeToken
3567
+ );
3568
+ // This will call the PhoneApiCaller to fetch and inject v2 token.
3569
+ return actionMethod(authInstance, requestWithRecaptchaFields);
3570
+ }
3571
+ }
3572
+ else {
3573
+ return Promise.reject(recaptchaAuthProvider + ' provider is not supported.');
3325
3574
  }
3326
3575
  }
3327
3576
  async function _initializeRecaptchaConfig(auth) {
@@ -3337,7 +3586,7 @@ async function _initializeRecaptchaConfig(auth) {
3337
3586
  else {
3338
3587
  authInternal._tenantRecaptchaConfigs[authInternal.tenantId] = config;
3339
3588
  }
3340
- if (config.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaProvider.EMAIL_PASSWORD_PROVIDER */)) {
3589
+ if (config.isAnyProviderEnabled()) {
3341
3590
  const verifier = new RecaptchaEnterpriseVerifier(authInternal);
3342
3591
  void verifier.verify();
3343
3592
  }
@@ -3763,7 +4012,7 @@ class EmailAuthCredential extends AuthCredential {
3763
4012
  password: this._password,
3764
4013
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
3765
4014
  };
3766
- return handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword);
4015
+ return handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
3767
4016
  case "emailLink" /* SignInMethod.EMAIL_LINK */:
3768
4017
  return signInWithEmailLink$1(auth, {
3769
4018
  email: this._email,
@@ -3784,7 +4033,7 @@ class EmailAuthCredential extends AuthCredential {
3784
4033
  password: this._password,
3785
4034
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
3786
4035
  };
3787
- return handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword);
4036
+ return handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
3788
4037
  case "emailLink" /* SignInMethod.EMAIL_LINK */:
3789
4038
  return signInWithEmailLinkForLinking(auth, {
3790
4039
  idToken,
@@ -5779,7 +6028,7 @@ async function sendPasswordResetEmail(auth, email, actionCodeSettings) {
5779
6028
  if (actionCodeSettings) {
5780
6029
  _setActionCodeSettingsOnRequest(authInternal, request, actionCodeSettings);
5781
6030
  }
5782
- await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1);
6031
+ await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
5783
6032
  }
5784
6033
  /**
5785
6034
  * Completes the password reset process, given a confirmation code and new password.
@@ -5912,7 +6161,7 @@ async function createUserWithEmailAndPassword(auth, email, password) {
5912
6161
  password,
5913
6162
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
5914
6163
  };
5915
- const signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp);
6164
+ const signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
5916
6165
  const response = await signUpResponse.catch(error => {
5917
6166
  if (error.code === `auth/${"password-does-not-meet-requirements" /* AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS */}`) {
5918
6167
  void recachePasswordPolicy(auth);
@@ -6026,7 +6275,7 @@ async function sendSignInLinkToEmail(auth, email, actionCodeSettings) {
6026
6275
  }
6027
6276
  }
6028
6277
  setActionCodeSettings(request, actionCodeSettings);
6029
- await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1);
6278
+ await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
6030
6279
  }
6031
6280
  /**
6032
6281
  * Checks if an incoming link is a sign-in with email link suitable for {@link signInWithEmailLink}.
@@ -7961,134 +8210,6 @@ function finalizeSignInTotpMfa(auth, request) {
7961
8210
  return _performApiRequest(auth, "POST" /* HttpMethod.POST */, "/v2/accounts/mfaSignIn:finalize" /* Endpoint.FINALIZE_MFA_SIGN_IN */, _addTidIfNecessary(auth, request));
7962
8211
  }
7963
8212
 
7964
- /**
7965
- * @license
7966
- * Copyright 2020 Google LLC
7967
- *
7968
- * Licensed under the Apache License, Version 2.0 (the "License");
7969
- * you may not use this file except in compliance with the License.
7970
- * You may obtain a copy of the License at
7971
- *
7972
- * http://www.apache.org/licenses/LICENSE-2.0
7973
- *
7974
- * Unless required by applicable law or agreed to in writing, software
7975
- * distributed under the License is distributed on an "AS IS" BASIS,
7976
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7977
- * See the License for the specific language governing permissions and
7978
- * limitations under the License.
7979
- */
7980
- const _SOLVE_TIME_MS = 500;
7981
- const _EXPIRATION_TIME_MS = 60000;
7982
- const _WIDGET_ID_START = 1000000000000;
7983
- class MockReCaptcha {
7984
- constructor(auth) {
7985
- this.auth = auth;
7986
- this.counter = _WIDGET_ID_START;
7987
- this._widgets = new Map();
7988
- }
7989
- render(container, parameters) {
7990
- const id = this.counter;
7991
- this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
7992
- this.counter++;
7993
- return id;
7994
- }
7995
- reset(optWidgetId) {
7996
- var _a;
7997
- const id = optWidgetId || _WIDGET_ID_START;
7998
- void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
7999
- this._widgets.delete(id);
8000
- }
8001
- getResponse(optWidgetId) {
8002
- var _a;
8003
- const id = optWidgetId || _WIDGET_ID_START;
8004
- return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
8005
- }
8006
- async execute(optWidgetId) {
8007
- var _a;
8008
- const id = optWidgetId || _WIDGET_ID_START;
8009
- void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
8010
- return '';
8011
- }
8012
- }
8013
- class MockWidget {
8014
- constructor(containerOrId, appName, params) {
8015
- this.params = params;
8016
- this.timerId = null;
8017
- this.deleted = false;
8018
- this.responseToken = null;
8019
- this.clickHandler = () => {
8020
- this.execute();
8021
- };
8022
- const container = typeof containerOrId === 'string'
8023
- ? document.getElementById(containerOrId)
8024
- : containerOrId;
8025
- _assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName });
8026
- this.container = container;
8027
- this.isVisible = this.params.size !== 'invisible';
8028
- if (this.isVisible) {
8029
- this.execute();
8030
- }
8031
- else {
8032
- this.container.addEventListener('click', this.clickHandler);
8033
- }
8034
- }
8035
- getResponse() {
8036
- this.checkIfDeleted();
8037
- return this.responseToken;
8038
- }
8039
- delete() {
8040
- this.checkIfDeleted();
8041
- this.deleted = true;
8042
- if (this.timerId) {
8043
- clearTimeout(this.timerId);
8044
- this.timerId = null;
8045
- }
8046
- this.container.removeEventListener('click', this.clickHandler);
8047
- }
8048
- execute() {
8049
- this.checkIfDeleted();
8050
- if (this.timerId) {
8051
- return;
8052
- }
8053
- this.timerId = window.setTimeout(() => {
8054
- this.responseToken = generateRandomAlphaNumericString(50);
8055
- const { callback, 'expired-callback': expiredCallback } = this.params;
8056
- if (callback) {
8057
- try {
8058
- callback(this.responseToken);
8059
- }
8060
- catch (e) { }
8061
- }
8062
- this.timerId = window.setTimeout(() => {
8063
- this.timerId = null;
8064
- this.responseToken = null;
8065
- if (expiredCallback) {
8066
- try {
8067
- expiredCallback();
8068
- }
8069
- catch (e) { }
8070
- }
8071
- if (this.isVisible) {
8072
- this.execute();
8073
- }
8074
- }, _EXPIRATION_TIME_MS);
8075
- }, _SOLVE_TIME_MS);
8076
- }
8077
- checkIfDeleted() {
8078
- if (this.deleted) {
8079
- throw new Error('reCAPTCHA mock was already deleted!');
8080
- }
8081
- }
8082
- }
8083
- function generateRandomAlphaNumericString(len) {
8084
- const chars = [];
8085
- const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
8086
- for (let i = 0; i < len; i++) {
8087
- chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
8088
- }
8089
- return chars.join('');
8090
- }
8091
-
8092
8213
  /**
8093
8214
  * @license
8094
8215
  * Copyright 2020 Google LLC
@@ -8443,12 +8564,15 @@ class ConfirmationResultImpl {
8443
8564
  * provides the code sent to their phone, call {@link ConfirmationResult.confirm}
8444
8565
  * with the code to sign the user in.
8445
8566
  *
8446
- * For abuse prevention, this method also requires a {@link ApplicationVerifier}.
8447
- * This SDK includes a reCAPTCHA-based implementation, {@link RecaptchaVerifier}.
8567
+ * For abuse prevention, this method requires a {@link ApplicationVerifier}.
8568
+ * This SDK includes an implementation based on reCAPTCHA v2, {@link RecaptchaVerifier}.
8448
8569
  * This function can work on other platforms that do not support the
8449
8570
  * {@link RecaptchaVerifier} (like React Native), but you need to use a
8450
8571
  * third-party {@link ApplicationVerifier} implementation.
8451
8572
  *
8573
+ * If you've enabled project-level reCAPTCHA Enterprise bot protection in
8574
+ * Enforce mode, you can omit the {@link ApplicationVerifier}.
8575
+ *
8452
8576
  * This method does not work in a Node.js environment or with {@link Auth} instances created with a
8453
8577
  * {@link @firebase/app#FirebaseServerApp}.
8454
8578
  *
@@ -8522,10 +8646,19 @@ async function reauthenticateWithPhoneNumber(user, phoneNumber, appVerifier) {
8522
8646
  */
8523
8647
  async function _verifyPhoneNumber(auth, options, verifier) {
8524
8648
  var _a;
8525
- const recaptchaToken = await verifier.verify();
8649
+ if (!auth._getRecaptchaConfig()) {
8650
+ try {
8651
+ await _initializeRecaptchaConfig(auth);
8652
+ }
8653
+ catch (error) {
8654
+ // If an error occurs while fetching the config, there is no way to know the enablement state
8655
+ // of Phone provider, so we proceed with recaptcha V2 verification.
8656
+ // The error is likely "recaptchaKey undefined", as reCAPTCHA Enterprise is not
8657
+ // enabled for any provider.
8658
+ console.log('Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.');
8659
+ }
8660
+ }
8526
8661
  try {
8527
- _assert(typeof recaptchaToken === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8528
- _assert(verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8529
8662
  let phoneInfoOptions;
8530
8663
  if (typeof options === 'string') {
8531
8664
  phoneInfoOptions = {
@@ -8539,12 +8672,25 @@ async function _verifyPhoneNumber(auth, options, verifier) {
8539
8672
  const session = phoneInfoOptions.session;
8540
8673
  if ('phoneNumber' in phoneInfoOptions) {
8541
8674
  _assert(session.type === "enroll" /* MultiFactorSessionType.ENROLL */, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
8542
- const response = await startEnrollPhoneMfa(auth, {
8675
+ const startPhoneMfaEnrollmentRequest = {
8543
8676
  idToken: session.credential,
8544
8677
  phoneEnrollmentInfo: {
8545
8678
  phoneNumber: phoneInfoOptions.phoneNumber,
8546
- recaptchaToken
8679
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
8680
+ }
8681
+ };
8682
+ const startEnrollPhoneMfaActionCallback = async (authInstance, request) => {
8683
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
8684
+ if (request.phoneEnrollmentInfo.captchaResponse === FAKE_TOKEN) {
8685
+ _assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8686
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
8687
+ return startEnrollPhoneMfa(authInstance, requestWithRecaptchaV2);
8547
8688
  }
8689
+ return startEnrollPhoneMfa(authInstance, request);
8690
+ };
8691
+ const startPhoneMfaEnrollmentResponse = handleRecaptchaFlow(auth, startPhoneMfaEnrollmentRequest, "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */, startEnrollPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
8692
+ const response = await startPhoneMfaEnrollmentResponse.catch(error => {
8693
+ return Promise.reject(error);
8548
8694
  });
8549
8695
  return response.phoneSessionInfo.sessionInfo;
8550
8696
  }
@@ -8553,26 +8699,52 @@ async function _verifyPhoneNumber(auth, options, verifier) {
8553
8699
  const mfaEnrollmentId = ((_a = phoneInfoOptions.multiFactorHint) === null || _a === void 0 ? void 0 : _a.uid) ||
8554
8700
  phoneInfoOptions.multiFactorUid;
8555
8701
  _assert(mfaEnrollmentId, auth, "missing-multi-factor-info" /* AuthErrorCode.MISSING_MFA_INFO */);
8556
- const response = await startSignInPhoneMfa(auth, {
8702
+ const startPhoneMfaSignInRequest = {
8557
8703
  mfaPendingCredential: session.credential,
8558
8704
  mfaEnrollmentId,
8559
8705
  phoneSignInInfo: {
8560
- recaptchaToken
8706
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
8707
+ }
8708
+ };
8709
+ const startSignInPhoneMfaActionCallback = async (authInstance, request) => {
8710
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
8711
+ if (request.phoneSignInInfo.captchaResponse === FAKE_TOKEN) {
8712
+ _assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8713
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
8714
+ return startSignInPhoneMfa(authInstance, requestWithRecaptchaV2);
8561
8715
  }
8716
+ return startSignInPhoneMfa(authInstance, request);
8717
+ };
8718
+ const startPhoneMfaSignInResponse = handleRecaptchaFlow(auth, startPhoneMfaSignInRequest, "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */, startSignInPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
8719
+ const response = await startPhoneMfaSignInResponse.catch(error => {
8720
+ return Promise.reject(error);
8562
8721
  });
8563
8722
  return response.phoneResponseInfo.sessionInfo;
8564
8723
  }
8565
8724
  }
8566
8725
  else {
8567
- const { sessionInfo } = await sendPhoneVerificationCode(auth, {
8726
+ const sendPhoneVerificationCodeRequest = {
8568
8727
  phoneNumber: phoneInfoOptions.phoneNumber,
8569
- recaptchaToken
8728
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
8729
+ };
8730
+ const sendPhoneVerificationCodeActionCallback = async (authInstance, request) => {
8731
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
8732
+ if (request.captchaResponse === FAKE_TOKEN) {
8733
+ _assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8734
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
8735
+ return sendPhoneVerificationCode(authInstance, requestWithRecaptchaV2);
8736
+ }
8737
+ return sendPhoneVerificationCode(authInstance, request);
8738
+ };
8739
+ const sendPhoneVerificationCodeResponse = handleRecaptchaFlow(auth, sendPhoneVerificationCodeRequest, "sendVerificationCode" /* RecaptchaActionName.SEND_VERIFICATION_CODE */, sendPhoneVerificationCodeActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
8740
+ const response = await sendPhoneVerificationCodeResponse.catch(error => {
8741
+ return Promise.reject(error);
8570
8742
  });
8571
- return sessionInfo;
8743
+ return response.sessionInfo;
8572
8744
  }
8573
8745
  }
8574
8746
  finally {
8575
- verifier._reset();
8747
+ verifier === null || verifier === void 0 ? void 0 : verifier._reset();
8576
8748
  }
8577
8749
  }
8578
8750
  /**
@@ -8604,6 +8776,49 @@ async function updatePhoneNumber(user, credential) {
8604
8776
  return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(userInternal.auth));
8605
8777
  }
8606
8778
  await _link$1(userInternal, credential);
8779
+ }
8780
+ // Helper function that fetches and injects a reCAPTCHA v2 token into the request.
8781
+ async function injectRecaptchaV2Token(auth, request, recaptchaV2Verifier) {
8782
+ _assert(recaptchaV2Verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8783
+ const recaptchaV2Token = await recaptchaV2Verifier.verify();
8784
+ _assert(typeof recaptchaV2Token === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8785
+ const newRequest = Object.assign({}, request);
8786
+ if ('phoneEnrollmentInfo' in newRequest) {
8787
+ const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
8788
+ const captchaResponse = newRequest.phoneEnrollmentInfo.captchaResponse;
8789
+ const clientType = newRequest
8790
+ .phoneEnrollmentInfo.clientType;
8791
+ const recaptchaVersion = newRequest.phoneEnrollmentInfo.recaptchaVersion;
8792
+ Object.assign(newRequest, {
8793
+ 'phoneEnrollmentInfo': {
8794
+ phoneNumber,
8795
+ recaptchaToken: recaptchaV2Token,
8796
+ captchaResponse,
8797
+ clientType,
8798
+ recaptchaVersion
8799
+ }
8800
+ });
8801
+ return newRequest;
8802
+ }
8803
+ else if ('phoneSignInInfo' in newRequest) {
8804
+ const captchaResponse = newRequest.phoneSignInInfo.captchaResponse;
8805
+ const clientType = newRequest
8806
+ .phoneSignInInfo.clientType;
8807
+ const recaptchaVersion = newRequest.phoneSignInInfo.recaptchaVersion;
8808
+ Object.assign(newRequest, {
8809
+ 'phoneSignInInfo': {
8810
+ recaptchaToken: recaptchaV2Token,
8811
+ captchaResponse,
8812
+ clientType,
8813
+ recaptchaVersion
8814
+ }
8815
+ });
8816
+ return newRequest;
8817
+ }
8818
+ else {
8819
+ Object.assign(newRequest, { 'recaptchaToken': recaptchaV2Token });
8820
+ return newRequest;
8821
+ }
8607
8822
  }
8608
8823
 
8609
8824
  /**
@@ -8675,12 +8890,14 @@ class PhoneAuthProvider {
8675
8890
  *
8676
8891
  * @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in
8677
8892
  * E.164 format (e.g. +16505550101).
8678
- * @param applicationVerifier - For abuse prevention, this method also requires a
8679
- * {@link ApplicationVerifier}. This SDK includes a reCAPTCHA-based implementation,
8680
- * {@link RecaptchaVerifier}.
8893
+ * @param applicationVerifier - An {@link ApplicationVerifier}, which prevents
8894
+ * requests from unauthorized clients. This SDK includes an implementation
8895
+ * based on reCAPTCHA v2, {@link RecaptchaVerifier}. If you've enabled
8896
+ * reCAPTCHA Enterprise bot protection in Enforce mode, this parameter is
8897
+ * optional; in all other configurations, the parameter is required.
8681
8898
  *
8682
8899
  * @returns A Promise for a verification ID that can be passed to
8683
- * {@link PhoneAuthProvider.credential} to identify this flow..
8900
+ * {@link PhoneAuthProvider.credential} to identify this flow.
8684
8901
  */
8685
8902
  verifyPhoneNumber(phoneOptions, applicationVerifier) {
8686
8903
  return _verifyPhoneNumber(this.auth, phoneOptions, getModularInstance(applicationVerifier));
@@ -10439,7 +10656,7 @@ function _isEmptyString(input) {
10439
10656
  }
10440
10657
 
10441
10658
  var name = "@firebase/auth";
10442
- var version = "1.7.9";
10659
+ var version = "1.8.0";
10443
10660
 
10444
10661
  /**
10445
10662
  * @license
@@ -10581,7 +10798,7 @@ function registerAuth(clientPlatform) {
10581
10798
  return (auth => new AuthInterop(auth))(auth);
10582
10799
  }, "PRIVATE" /* ComponentType.PRIVATE */).setInstantiationMode("EXPLICIT" /* InstantiationMode.EXPLICIT */));
10583
10800
  registerVersion(name, version, getVersionForPlatform(clientPlatform));
10584
- // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation
10801
+ // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation
10585
10802
  registerVersion(name, version, 'esm2017');
10586
10803
  }
10587
10804
 
@@ -10694,4 +10911,4 @@ _setExternalJSProvider({
10694
10911
  registerAuth("Browser" /* ClientPlatform.BROWSER */);
10695
10912
 
10696
10913
  export { TwitterAuthProvider as $, ActionCodeOperation as A, updateCurrentUser as B, signOut as C, revokeAccessToken as D, deleteUser as E, FactorId as F, debugErrorMap as G, prodErrorMap as H, AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY as I, initializeAuth as J, connectAuthEmulator as K, AuthCredential as L, EmailAuthCredential as M, OAuthCredential as N, OperationType as O, PhoneAuthProvider as P, PhoneAuthCredential as Q, RecaptchaVerifier as R, SignInMethod as S, TotpMultiFactorGenerator as T, inMemoryPersistence as U, EmailAuthProvider as V, FacebookAuthProvider as W, GoogleAuthProvider as X, GithubAuthProvider as Y, OAuthProvider as Z, SAMLAuthProvider as _, browserSessionPersistence as a, signInAnonymously as a0, signInWithCredential as a1, linkWithCredential as a2, reauthenticateWithCredential as a3, signInWithCustomToken as a4, sendPasswordResetEmail as a5, confirmPasswordReset as a6, applyActionCode as a7, checkActionCode as a8, verifyPasswordResetCode as a9, _isIOS7Or8 as aA, _createError as aB, _assert as aC, AuthEventManager as aD, _getInstance as aE, _persistenceKeyName as aF, _getRedirectResult as aG, _overrideRedirectResult as aH, _clearRedirectOutcomes as aI, _castAuth as aJ, UserImpl as aK, AuthImpl as aL, _getClientVersion as aM, _generateEventId as aN, AuthPopup as aO, FetchProvider as aP, SAMLAuthCredential as aQ, createUserWithEmailAndPassword as aa, signInWithEmailAndPassword as ab, sendSignInLinkToEmail as ac, isSignInWithEmailLink as ad, signInWithEmailLink as ae, fetchSignInMethodsForEmail as af, sendEmailVerification as ag, verifyBeforeUpdateEmail as ah, ActionCodeURL as ai, parseActionCodeURL as aj, updateProfile as ak, updateEmail as al, updatePassword as am, getIdToken as an, getIdTokenResult as ao, unlink as ap, getAdditionalUserInfo as aq, reload as ar, getMultiFactorResolver as as, multiFactor as at, debugAssert as au, _isIOS as av, _isAndroid as aw, _fail as ax, _getRedirectUrl as ay, _getProjectConfig as az, browserLocalPersistence as b, signInWithPopup as c, linkWithPopup as d, reauthenticateWithPopup as e, signInWithRedirect as f, linkWithRedirect as g, reauthenticateWithRedirect as h, indexedDBLocalPersistence as i, getRedirectResult as j, browserPopupRedirectResolver as k, linkWithPhoneNumber as l, PhoneMultiFactorGenerator as m, TotpSecret as n, getAuth as o, ProviderId as p, setPersistence as q, reauthenticateWithPhoneNumber as r, signInWithPhoneNumber as s, initializeRecaptchaConfig as t, updatePhoneNumber as u, validatePassword as v, onIdTokenChanged as w, beforeAuthStateChanged as x, onAuthStateChanged as y, useDeviceLanguage as z };
10697
- //# sourceMappingURL=index-68602d24.js.map
10914
+ //# sourceMappingURL=index-a7d5cfcc.js.map