@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
@@ -1092,6 +1092,16 @@ class RecaptchaConfig {
1092
1092
  "ENFORCE" /* EnforcementState.ENFORCE */ ||
1093
1093
  this.getProviderEnforcementState(providerStr) === "AUDIT" /* EnforcementState.AUDIT */);
1094
1094
  }
1095
+ /**
1096
+ * Returns true if reCAPTCHA Enterprise protection is enabled in at least one provider, otherwise
1097
+ * returns false.
1098
+ *
1099
+ * @returns Whether or not reCAPTCHA Enterprise protection is enabled for at least one provider.
1100
+ */
1101
+ isAnyProviderEnabled() {
1102
+ return (this.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) ||
1103
+ this.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */));
1104
+ }
1095
1105
  }
1096
1106
 
1097
1107
  /**
@@ -3179,6 +3189,167 @@ function _generateCallbackName(prefix) {
3179
3189
  return `__${prefix}${Math.floor(Math.random() * 1000000)}`;
3180
3190
  }
3181
3191
 
3192
+ /**
3193
+ * @license
3194
+ * Copyright 2020 Google LLC
3195
+ *
3196
+ * Licensed under the Apache License, Version 2.0 (the "License");
3197
+ * you may not use this file except in compliance with the License.
3198
+ * You may obtain a copy of the License at
3199
+ *
3200
+ * http://www.apache.org/licenses/LICENSE-2.0
3201
+ *
3202
+ * Unless required by applicable law or agreed to in writing, software
3203
+ * distributed under the License is distributed on an "AS IS" BASIS,
3204
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3205
+ * See the License for the specific language governing permissions and
3206
+ * limitations under the License.
3207
+ */
3208
+ const _SOLVE_TIME_MS = 500;
3209
+ const _EXPIRATION_TIME_MS = 60000;
3210
+ const _WIDGET_ID_START = 1000000000000;
3211
+ class MockReCaptcha {
3212
+ constructor(auth) {
3213
+ this.auth = auth;
3214
+ this.counter = _WIDGET_ID_START;
3215
+ this._widgets = new Map();
3216
+ }
3217
+ render(container, parameters) {
3218
+ const id = this.counter;
3219
+ this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
3220
+ this.counter++;
3221
+ return id;
3222
+ }
3223
+ reset(optWidgetId) {
3224
+ var _a;
3225
+ const id = optWidgetId || _WIDGET_ID_START;
3226
+ void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
3227
+ this._widgets.delete(id);
3228
+ }
3229
+ getResponse(optWidgetId) {
3230
+ var _a;
3231
+ const id = optWidgetId || _WIDGET_ID_START;
3232
+ return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
3233
+ }
3234
+ async execute(optWidgetId) {
3235
+ var _a;
3236
+ const id = optWidgetId || _WIDGET_ID_START;
3237
+ void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
3238
+ return '';
3239
+ }
3240
+ }
3241
+ class MockGreCAPTCHATopLevel {
3242
+ constructor() {
3243
+ this.enterprise = new MockGreCAPTCHA();
3244
+ }
3245
+ ready(callback) {
3246
+ callback();
3247
+ }
3248
+ execute(
3249
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3250
+ _siteKey, _options) {
3251
+ return Promise.resolve('token');
3252
+ }
3253
+ render(
3254
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3255
+ _container, _parameters) {
3256
+ return '';
3257
+ }
3258
+ }
3259
+ class MockGreCAPTCHA {
3260
+ ready(callback) {
3261
+ callback();
3262
+ }
3263
+ execute(
3264
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3265
+ _siteKey, _options) {
3266
+ return Promise.resolve('token');
3267
+ }
3268
+ render(
3269
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
3270
+ _container, _parameters) {
3271
+ return '';
3272
+ }
3273
+ }
3274
+ class MockWidget {
3275
+ constructor(containerOrId, appName, params) {
3276
+ this.params = params;
3277
+ this.timerId = null;
3278
+ this.deleted = false;
3279
+ this.responseToken = null;
3280
+ this.clickHandler = () => {
3281
+ this.execute();
3282
+ };
3283
+ const container = typeof containerOrId === 'string'
3284
+ ? document.getElementById(containerOrId)
3285
+ : containerOrId;
3286
+ _assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName });
3287
+ this.container = container;
3288
+ this.isVisible = this.params.size !== 'invisible';
3289
+ if (this.isVisible) {
3290
+ this.execute();
3291
+ }
3292
+ else {
3293
+ this.container.addEventListener('click', this.clickHandler);
3294
+ }
3295
+ }
3296
+ getResponse() {
3297
+ this.checkIfDeleted();
3298
+ return this.responseToken;
3299
+ }
3300
+ delete() {
3301
+ this.checkIfDeleted();
3302
+ this.deleted = true;
3303
+ if (this.timerId) {
3304
+ clearTimeout(this.timerId);
3305
+ this.timerId = null;
3306
+ }
3307
+ this.container.removeEventListener('click', this.clickHandler);
3308
+ }
3309
+ execute() {
3310
+ this.checkIfDeleted();
3311
+ if (this.timerId) {
3312
+ return;
3313
+ }
3314
+ this.timerId = window.setTimeout(() => {
3315
+ this.responseToken = generateRandomAlphaNumericString(50);
3316
+ const { callback, 'expired-callback': expiredCallback } = this.params;
3317
+ if (callback) {
3318
+ try {
3319
+ callback(this.responseToken);
3320
+ }
3321
+ catch (e) { }
3322
+ }
3323
+ this.timerId = window.setTimeout(() => {
3324
+ this.timerId = null;
3325
+ this.responseToken = null;
3326
+ if (expiredCallback) {
3327
+ try {
3328
+ expiredCallback();
3329
+ }
3330
+ catch (e) { }
3331
+ }
3332
+ if (this.isVisible) {
3333
+ this.execute();
3334
+ }
3335
+ }, _EXPIRATION_TIME_MS);
3336
+ }, _SOLVE_TIME_MS);
3337
+ }
3338
+ checkIfDeleted() {
3339
+ if (this.deleted) {
3340
+ throw new Error('reCAPTCHA mock was already deleted!');
3341
+ }
3342
+ }
3343
+ }
3344
+ function generateRandomAlphaNumericString(len) {
3345
+ const chars = [];
3346
+ const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
3347
+ for (let i = 0; i < len; i++) {
3348
+ chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
3349
+ }
3350
+ return chars.join('');
3351
+ }
3352
+
3182
3353
  /* eslint-disable @typescript-eslint/no-require-imports */
3183
3354
  const RECAPTCHA_ENTERPRISE_VERIFIER_TYPE = 'recaptcha-enterprise';
3184
3355
  const FAKE_TOKEN = 'NO_RECAPTCHA';
@@ -3254,6 +3425,11 @@ class RecaptchaEnterpriseVerifier {
3254
3425
  reject(Error('No reCAPTCHA enterprise script loaded.'));
3255
3426
  }
3256
3427
  }
3428
+ // Returns Promise for a mock token when appVerificationDisabledForTesting is true.
3429
+ if (this.auth.settings.appVerificationDisabledForTesting) {
3430
+ const mockRecaptcha = new MockGreCAPTCHATopLevel();
3431
+ return mockRecaptcha.execute('siteKey', { action: 'verify' });
3432
+ }
3257
3433
  return new Promise((resolve, reject) => {
3258
3434
  retrieveSiteKey(this.auth)
3259
3435
  .then(siteKey => {
@@ -3284,17 +3460,50 @@ class RecaptchaEnterpriseVerifier {
3284
3460
  });
3285
3461
  }
3286
3462
  }
3287
- async function injectRecaptchaFields(auth, request, action, captchaResp = false) {
3463
+ async function injectRecaptchaFields(auth, request, action, isCaptchaResp = false, isFakeToken = false) {
3288
3464
  const verifier = new RecaptchaEnterpriseVerifier(auth);
3289
3465
  let captchaResponse;
3290
- try {
3291
- captchaResponse = await verifier.verify(action);
3466
+ if (isFakeToken) {
3467
+ captchaResponse = FAKE_TOKEN;
3292
3468
  }
3293
- catch (error) {
3294
- captchaResponse = await verifier.verify(action, true);
3469
+ else {
3470
+ try {
3471
+ captchaResponse = await verifier.verify(action);
3472
+ }
3473
+ catch (error) {
3474
+ captchaResponse = await verifier.verify(action, true);
3475
+ }
3295
3476
  }
3296
3477
  const newRequest = Object.assign({}, request);
3297
- if (!captchaResp) {
3478
+ if (action === "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */ ||
3479
+ action === "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */) {
3480
+ if ('phoneEnrollmentInfo' in newRequest) {
3481
+ const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
3482
+ const recaptchaToken = newRequest.phoneEnrollmentInfo.recaptchaToken;
3483
+ Object.assign(newRequest, {
3484
+ 'phoneEnrollmentInfo': {
3485
+ phoneNumber,
3486
+ recaptchaToken,
3487
+ captchaResponse,
3488
+ 'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
3489
+ 'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
3490
+ }
3491
+ });
3492
+ }
3493
+ else if ('phoneSignInInfo' in newRequest) {
3494
+ const recaptchaToken = newRequest.phoneSignInInfo.recaptchaToken;
3495
+ Object.assign(newRequest, {
3496
+ 'phoneSignInInfo': {
3497
+ recaptchaToken,
3498
+ captchaResponse,
3499
+ 'clientType': "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */,
3500
+ 'recaptchaVersion': "RECAPTCHA_ENTERPRISE" /* RecaptchaVersion.ENTERPRISE */
3501
+ }
3502
+ });
3503
+ }
3504
+ return newRequest;
3505
+ }
3506
+ if (!isCaptchaResp) {
3298
3507
  Object.assign(newRequest, { captchaResponse });
3299
3508
  }
3300
3509
  else {
@@ -3306,24 +3515,64 @@ async function injectRecaptchaFields(auth, request, action, captchaResp = false)
3306
3515
  });
3307
3516
  return newRequest;
3308
3517
  }
3309
- async function handleRecaptchaFlow(authInstance, request, actionName, actionMethod) {
3310
- var _a;
3311
- if ((_a = authInstance
3312
- ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaProvider.EMAIL_PASSWORD_PROVIDER */)) {
3313
- const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
3314
- return actionMethod(authInstance, requestWithRecaptcha);
3518
+ async function handleRecaptchaFlow(authInstance, request, actionName, actionMethod, recaptchaAuthProvider) {
3519
+ var _a, _b;
3520
+ if (recaptchaAuthProvider === "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */) {
3521
+ if ((_a = authInstance
3522
+ ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */)) {
3523
+ const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
3524
+ return actionMethod(authInstance, requestWithRecaptcha);
3525
+ }
3526
+ else {
3527
+ return actionMethod(authInstance, request).catch(async (error) => {
3528
+ if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}`) {
3529
+ console.log(`${actionName} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);
3530
+ const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
3531
+ return actionMethod(authInstance, requestWithRecaptcha);
3532
+ }
3533
+ else {
3534
+ return Promise.reject(error);
3535
+ }
3536
+ });
3537
+ }
3315
3538
  }
3316
- else {
3317
- return actionMethod(authInstance, request).catch(async (error) => {
3318
- if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}`) {
3319
- console.log(`${actionName} is protected by reCAPTCHA Enterprise for this project. Automatically triggering the reCAPTCHA flow and restarting the flow.`);
3320
- const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName, actionName === "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */);
3321
- return actionMethod(authInstance, requestWithRecaptcha);
3322
- }
3323
- else {
3539
+ else if (recaptchaAuthProvider === "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */) {
3540
+ if ((_b = authInstance
3541
+ ._getRecaptchaConfig()) === null || _b === void 0 ? void 0 : _b.isProviderEnabled("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) {
3542
+ const requestWithRecaptcha = await injectRecaptchaFields(authInstance, request, actionName);
3543
+ return actionMethod(authInstance, requestWithRecaptcha).catch(async (error) => {
3544
+ var _a;
3545
+ if (((_a = authInstance
3546
+ ._getRecaptchaConfig()) === null || _a === void 0 ? void 0 : _a.getProviderEnforcementState("PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */)) === "AUDIT" /* EnforcementState.AUDIT */) {
3547
+ // AUDIT mode
3548
+ if (error.code === `auth/${"missing-recaptcha-token" /* AuthErrorCode.MISSING_RECAPTCHA_TOKEN */}` ||
3549
+ error.code === `auth/${"invalid-app-credential" /* AuthErrorCode.INVALID_APP_CREDENTIAL */}`) {
3550
+ console.log(`Failed to verify with reCAPTCHA Enterprise. Automatically triggering the reCAPTCHA v2 flow to complete the ${actionName} flow.`);
3551
+ // reCAPTCHA Enterprise token is missing or reCAPTCHA Enterprise token
3552
+ // check fails.
3553
+ // Fallback to reCAPTCHA v2 flow.
3554
+ const requestWithRecaptchaFields = await injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
3555
+ true // isFakeToken
3556
+ );
3557
+ // This will call the PhoneApiCaller to fetch and inject reCAPTCHA v2 token.
3558
+ return actionMethod(authInstance, requestWithRecaptchaFields);
3559
+ }
3560
+ }
3561
+ // ENFORCE mode or AUDIT mode with any other error.
3324
3562
  return Promise.reject(error);
3325
- }
3326
- });
3563
+ });
3564
+ }
3565
+ else {
3566
+ // Do reCAPTCHA v2 flow.
3567
+ const requestWithRecaptchaFields = await injectRecaptchaFields(authInstance, request, actionName, false, // isCaptchaResp
3568
+ true // isFakeToken
3569
+ );
3570
+ // This will call the PhoneApiCaller to fetch and inject v2 token.
3571
+ return actionMethod(authInstance, requestWithRecaptchaFields);
3572
+ }
3573
+ }
3574
+ else {
3575
+ return Promise.reject(recaptchaAuthProvider + ' provider is not supported.');
3327
3576
  }
3328
3577
  }
3329
3578
  async function _initializeRecaptchaConfig(auth) {
@@ -3339,7 +3588,7 @@ async function _initializeRecaptchaConfig(auth) {
3339
3588
  else {
3340
3589
  authInternal._tenantRecaptchaConfigs[authInternal.tenantId] = config;
3341
3590
  }
3342
- if (config.isProviderEnabled("EMAIL_PASSWORD_PROVIDER" /* RecaptchaProvider.EMAIL_PASSWORD_PROVIDER */)) {
3591
+ if (config.isAnyProviderEnabled()) {
3343
3592
  const verifier = new RecaptchaEnterpriseVerifier(authInternal);
3344
3593
  void verifier.verify();
3345
3594
  }
@@ -3765,7 +4014,7 @@ class EmailAuthCredential extends AuthCredential {
3765
4014
  password: this._password,
3766
4015
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
3767
4016
  };
3768
- return handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword);
4017
+ return handleRecaptchaFlow(auth, request, "signInWithPassword" /* RecaptchaActionName.SIGN_IN_WITH_PASSWORD */, signInWithPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
3769
4018
  case "emailLink" /* SignInMethod.EMAIL_LINK */:
3770
4019
  return signInWithEmailLink$1(auth, {
3771
4020
  email: this._email,
@@ -3786,7 +4035,7 @@ class EmailAuthCredential extends AuthCredential {
3786
4035
  password: this._password,
3787
4036
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
3788
4037
  };
3789
- return handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword);
4038
+ return handleRecaptchaFlow(auth, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, linkEmailPassword, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
3790
4039
  case "emailLink" /* SignInMethod.EMAIL_LINK */:
3791
4040
  return signInWithEmailLinkForLinking(auth, {
3792
4041
  idToken,
@@ -5781,7 +6030,7 @@ async function sendPasswordResetEmail(auth, email, actionCodeSettings) {
5781
6030
  if (actionCodeSettings) {
5782
6031
  _setActionCodeSettingsOnRequest(authInternal, request, actionCodeSettings);
5783
6032
  }
5784
- await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1);
6033
+ await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendPasswordResetEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
5785
6034
  }
5786
6035
  /**
5787
6036
  * Completes the password reset process, given a confirmation code and new password.
@@ -5914,7 +6163,7 @@ async function createUserWithEmailAndPassword(auth, email, password) {
5914
6163
  password,
5915
6164
  clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
5916
6165
  };
5917
- const signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp);
6166
+ const signUpResponse = handleRecaptchaFlow(authInternal, request, "signUpPassword" /* RecaptchaActionName.SIGN_UP_PASSWORD */, signUp, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
5918
6167
  const response = await signUpResponse.catch(error => {
5919
6168
  if (error.code === `auth/${"password-does-not-meet-requirements" /* AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS */}`) {
5920
6169
  void recachePasswordPolicy(auth);
@@ -6028,7 +6277,7 @@ async function sendSignInLinkToEmail(auth, email, actionCodeSettings) {
6028
6277
  }
6029
6278
  }
6030
6279
  setActionCodeSettings(request, actionCodeSettings);
6031
- await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1);
6280
+ await handleRecaptchaFlow(authInternal, request, "getOobCode" /* RecaptchaActionName.GET_OOB_CODE */, sendSignInLinkToEmail$1, "EMAIL_PASSWORD_PROVIDER" /* RecaptchaAuthProvider.EMAIL_PASSWORD_PROVIDER */);
6032
6281
  }
6033
6282
  /**
6034
6283
  * Checks if an incoming link is a sign-in with email link suitable for {@link signInWithEmailLink}.
@@ -7963,134 +8212,6 @@ function finalizeSignInTotpMfa(auth, request) {
7963
8212
  return _performApiRequest(auth, "POST" /* HttpMethod.POST */, "/v2/accounts/mfaSignIn:finalize" /* Endpoint.FINALIZE_MFA_SIGN_IN */, _addTidIfNecessary(auth, request));
7964
8213
  }
7965
8214
 
7966
- /**
7967
- * @license
7968
- * Copyright 2020 Google LLC
7969
- *
7970
- * Licensed under the Apache License, Version 2.0 (the "License");
7971
- * you may not use this file except in compliance with the License.
7972
- * You may obtain a copy of the License at
7973
- *
7974
- * http://www.apache.org/licenses/LICENSE-2.0
7975
- *
7976
- * Unless required by applicable law or agreed to in writing, software
7977
- * distributed under the License is distributed on an "AS IS" BASIS,
7978
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7979
- * See the License for the specific language governing permissions and
7980
- * limitations under the License.
7981
- */
7982
- const _SOLVE_TIME_MS = 500;
7983
- const _EXPIRATION_TIME_MS = 60000;
7984
- const _WIDGET_ID_START = 1000000000000;
7985
- class MockReCaptcha {
7986
- constructor(auth) {
7987
- this.auth = auth;
7988
- this.counter = _WIDGET_ID_START;
7989
- this._widgets = new Map();
7990
- }
7991
- render(container, parameters) {
7992
- const id = this.counter;
7993
- this._widgets.set(id, new MockWidget(container, this.auth.name, parameters || {}));
7994
- this.counter++;
7995
- return id;
7996
- }
7997
- reset(optWidgetId) {
7998
- var _a;
7999
- const id = optWidgetId || _WIDGET_ID_START;
8000
- void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.delete());
8001
- this._widgets.delete(id);
8002
- }
8003
- getResponse(optWidgetId) {
8004
- var _a;
8005
- const id = optWidgetId || _WIDGET_ID_START;
8006
- return ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.getResponse()) || '';
8007
- }
8008
- async execute(optWidgetId) {
8009
- var _a;
8010
- const id = optWidgetId || _WIDGET_ID_START;
8011
- void ((_a = this._widgets.get(id)) === null || _a === void 0 ? void 0 : _a.execute());
8012
- return '';
8013
- }
8014
- }
8015
- class MockWidget {
8016
- constructor(containerOrId, appName, params) {
8017
- this.params = params;
8018
- this.timerId = null;
8019
- this.deleted = false;
8020
- this.responseToken = null;
8021
- this.clickHandler = () => {
8022
- this.execute();
8023
- };
8024
- const container = typeof containerOrId === 'string'
8025
- ? document.getElementById(containerOrId)
8026
- : containerOrId;
8027
- _assert(container, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */, { appName });
8028
- this.container = container;
8029
- this.isVisible = this.params.size !== 'invisible';
8030
- if (this.isVisible) {
8031
- this.execute();
8032
- }
8033
- else {
8034
- this.container.addEventListener('click', this.clickHandler);
8035
- }
8036
- }
8037
- getResponse() {
8038
- this.checkIfDeleted();
8039
- return this.responseToken;
8040
- }
8041
- delete() {
8042
- this.checkIfDeleted();
8043
- this.deleted = true;
8044
- if (this.timerId) {
8045
- clearTimeout(this.timerId);
8046
- this.timerId = null;
8047
- }
8048
- this.container.removeEventListener('click', this.clickHandler);
8049
- }
8050
- execute() {
8051
- this.checkIfDeleted();
8052
- if (this.timerId) {
8053
- return;
8054
- }
8055
- this.timerId = window.setTimeout(() => {
8056
- this.responseToken = generateRandomAlphaNumericString(50);
8057
- const { callback, 'expired-callback': expiredCallback } = this.params;
8058
- if (callback) {
8059
- try {
8060
- callback(this.responseToken);
8061
- }
8062
- catch (e) { }
8063
- }
8064
- this.timerId = window.setTimeout(() => {
8065
- this.timerId = null;
8066
- this.responseToken = null;
8067
- if (expiredCallback) {
8068
- try {
8069
- expiredCallback();
8070
- }
8071
- catch (e) { }
8072
- }
8073
- if (this.isVisible) {
8074
- this.execute();
8075
- }
8076
- }, _EXPIRATION_TIME_MS);
8077
- }, _SOLVE_TIME_MS);
8078
- }
8079
- checkIfDeleted() {
8080
- if (this.deleted) {
8081
- throw new Error('reCAPTCHA mock was already deleted!');
8082
- }
8083
- }
8084
- }
8085
- function generateRandomAlphaNumericString(len) {
8086
- const chars = [];
8087
- const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
8088
- for (let i = 0; i < len; i++) {
8089
- chars.push(allowedChars.charAt(Math.floor(Math.random() * allowedChars.length)));
8090
- }
8091
- return chars.join('');
8092
- }
8093
-
8094
8215
  /**
8095
8216
  * @license
8096
8217
  * Copyright 2020 Google LLC
@@ -8445,12 +8566,15 @@ class ConfirmationResultImpl {
8445
8566
  * provides the code sent to their phone, call {@link ConfirmationResult.confirm}
8446
8567
  * with the code to sign the user in.
8447
8568
  *
8448
- * For abuse prevention, this method also requires a {@link ApplicationVerifier}.
8449
- * This SDK includes a reCAPTCHA-based implementation, {@link RecaptchaVerifier}.
8569
+ * For abuse prevention, this method requires a {@link ApplicationVerifier}.
8570
+ * This SDK includes an implementation based on reCAPTCHA v2, {@link RecaptchaVerifier}.
8450
8571
  * This function can work on other platforms that do not support the
8451
8572
  * {@link RecaptchaVerifier} (like React Native), but you need to use a
8452
8573
  * third-party {@link ApplicationVerifier} implementation.
8453
8574
  *
8575
+ * If you've enabled project-level reCAPTCHA Enterprise bot protection in
8576
+ * Enforce mode, you can omit the {@link ApplicationVerifier}.
8577
+ *
8454
8578
  * This method does not work in a Node.js environment or with {@link Auth} instances created with a
8455
8579
  * {@link @firebase/app#FirebaseServerApp}.
8456
8580
  *
@@ -8524,10 +8648,19 @@ async function reauthenticateWithPhoneNumber(user, phoneNumber, appVerifier) {
8524
8648
  */
8525
8649
  async function _verifyPhoneNumber(auth, options, verifier) {
8526
8650
  var _a;
8527
- const recaptchaToken = await verifier.verify();
8651
+ if (!auth._getRecaptchaConfig()) {
8652
+ try {
8653
+ await _initializeRecaptchaConfig(auth);
8654
+ }
8655
+ catch (error) {
8656
+ // If an error occurs while fetching the config, there is no way to know the enablement state
8657
+ // of Phone provider, so we proceed with recaptcha V2 verification.
8658
+ // The error is likely "recaptchaKey undefined", as reCAPTCHA Enterprise is not
8659
+ // enabled for any provider.
8660
+ console.log('Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.');
8661
+ }
8662
+ }
8528
8663
  try {
8529
- _assert(typeof recaptchaToken === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8530
- _assert(verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8531
8664
  let phoneInfoOptions;
8532
8665
  if (typeof options === 'string') {
8533
8666
  phoneInfoOptions = {
@@ -8541,12 +8674,25 @@ async function _verifyPhoneNumber(auth, options, verifier) {
8541
8674
  const session = phoneInfoOptions.session;
8542
8675
  if ('phoneNumber' in phoneInfoOptions) {
8543
8676
  _assert(session.type === "enroll" /* MultiFactorSessionType.ENROLL */, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
8544
- const response = await startEnrollPhoneMfa(auth, {
8677
+ const startPhoneMfaEnrollmentRequest = {
8545
8678
  idToken: session.credential,
8546
8679
  phoneEnrollmentInfo: {
8547
8680
  phoneNumber: phoneInfoOptions.phoneNumber,
8548
- recaptchaToken
8681
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
8682
+ }
8683
+ };
8684
+ const startEnrollPhoneMfaActionCallback = async (authInstance, request) => {
8685
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
8686
+ if (request.phoneEnrollmentInfo.captchaResponse === FAKE_TOKEN) {
8687
+ _assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8688
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
8689
+ return startEnrollPhoneMfa(authInstance, requestWithRecaptchaV2);
8549
8690
  }
8691
+ return startEnrollPhoneMfa(authInstance, request);
8692
+ };
8693
+ const startPhoneMfaEnrollmentResponse = handleRecaptchaFlow(auth, startPhoneMfaEnrollmentRequest, "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */, startEnrollPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
8694
+ const response = await startPhoneMfaEnrollmentResponse.catch(error => {
8695
+ return Promise.reject(error);
8550
8696
  });
8551
8697
  return response.phoneSessionInfo.sessionInfo;
8552
8698
  }
@@ -8555,26 +8701,52 @@ async function _verifyPhoneNumber(auth, options, verifier) {
8555
8701
  const mfaEnrollmentId = ((_a = phoneInfoOptions.multiFactorHint) === null || _a === void 0 ? void 0 : _a.uid) ||
8556
8702
  phoneInfoOptions.multiFactorUid;
8557
8703
  _assert(mfaEnrollmentId, auth, "missing-multi-factor-info" /* AuthErrorCode.MISSING_MFA_INFO */);
8558
- const response = await startSignInPhoneMfa(auth, {
8704
+ const startPhoneMfaSignInRequest = {
8559
8705
  mfaPendingCredential: session.credential,
8560
8706
  mfaEnrollmentId,
8561
8707
  phoneSignInInfo: {
8562
- recaptchaToken
8708
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
8709
+ }
8710
+ };
8711
+ const startSignInPhoneMfaActionCallback = async (authInstance, request) => {
8712
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
8713
+ if (request.phoneSignInInfo.captchaResponse === FAKE_TOKEN) {
8714
+ _assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8715
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
8716
+ return startSignInPhoneMfa(authInstance, requestWithRecaptchaV2);
8563
8717
  }
8718
+ return startSignInPhoneMfa(authInstance, request);
8719
+ };
8720
+ const startPhoneMfaSignInResponse = handleRecaptchaFlow(auth, startPhoneMfaSignInRequest, "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */, startSignInPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
8721
+ const response = await startPhoneMfaSignInResponse.catch(error => {
8722
+ return Promise.reject(error);
8564
8723
  });
8565
8724
  return response.phoneResponseInfo.sessionInfo;
8566
8725
  }
8567
8726
  }
8568
8727
  else {
8569
- const { sessionInfo } = await sendPhoneVerificationCode(auth, {
8728
+ const sendPhoneVerificationCodeRequest = {
8570
8729
  phoneNumber: phoneInfoOptions.phoneNumber,
8571
- recaptchaToken
8730
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
8731
+ };
8732
+ const sendPhoneVerificationCodeActionCallback = async (authInstance, request) => {
8733
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
8734
+ if (request.captchaResponse === FAKE_TOKEN) {
8735
+ _assert((verifier === null || verifier === void 0 ? void 0 : verifier.type) === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8736
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
8737
+ return sendPhoneVerificationCode(authInstance, requestWithRecaptchaV2);
8738
+ }
8739
+ return sendPhoneVerificationCode(authInstance, request);
8740
+ };
8741
+ const sendPhoneVerificationCodeResponse = handleRecaptchaFlow(auth, sendPhoneVerificationCodeRequest, "sendVerificationCode" /* RecaptchaActionName.SEND_VERIFICATION_CODE */, sendPhoneVerificationCodeActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
8742
+ const response = await sendPhoneVerificationCodeResponse.catch(error => {
8743
+ return Promise.reject(error);
8572
8744
  });
8573
- return sessionInfo;
8745
+ return response.sessionInfo;
8574
8746
  }
8575
8747
  }
8576
8748
  finally {
8577
- verifier._reset();
8749
+ verifier === null || verifier === void 0 ? void 0 : verifier._reset();
8578
8750
  }
8579
8751
  }
8580
8752
  /**
@@ -8606,6 +8778,49 @@ async function updatePhoneNumber(user, credential) {
8606
8778
  return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(userInternal.auth));
8607
8779
  }
8608
8780
  await _link$1(userInternal, credential);
8781
+ }
8782
+ // Helper function that fetches and injects a reCAPTCHA v2 token into the request.
8783
+ async function injectRecaptchaV2Token(auth, request, recaptchaV2Verifier) {
8784
+ _assert(recaptchaV2Verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8785
+ const recaptchaV2Token = await recaptchaV2Verifier.verify();
8786
+ _assert(typeof recaptchaV2Token === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
8787
+ const newRequest = Object.assign({}, request);
8788
+ if ('phoneEnrollmentInfo' in newRequest) {
8789
+ const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
8790
+ const captchaResponse = newRequest.phoneEnrollmentInfo.captchaResponse;
8791
+ const clientType = newRequest
8792
+ .phoneEnrollmentInfo.clientType;
8793
+ const recaptchaVersion = newRequest.phoneEnrollmentInfo.recaptchaVersion;
8794
+ Object.assign(newRequest, {
8795
+ 'phoneEnrollmentInfo': {
8796
+ phoneNumber,
8797
+ recaptchaToken: recaptchaV2Token,
8798
+ captchaResponse,
8799
+ clientType,
8800
+ recaptchaVersion
8801
+ }
8802
+ });
8803
+ return newRequest;
8804
+ }
8805
+ else if ('phoneSignInInfo' in newRequest) {
8806
+ const captchaResponse = newRequest.phoneSignInInfo.captchaResponse;
8807
+ const clientType = newRequest
8808
+ .phoneSignInInfo.clientType;
8809
+ const recaptchaVersion = newRequest.phoneSignInInfo.recaptchaVersion;
8810
+ Object.assign(newRequest, {
8811
+ 'phoneSignInInfo': {
8812
+ recaptchaToken: recaptchaV2Token,
8813
+ captchaResponse,
8814
+ clientType,
8815
+ recaptchaVersion
8816
+ }
8817
+ });
8818
+ return newRequest;
8819
+ }
8820
+ else {
8821
+ Object.assign(newRequest, { 'recaptchaToken': recaptchaV2Token });
8822
+ return newRequest;
8823
+ }
8609
8824
  }
8610
8825
 
8611
8826
  /**
@@ -8677,12 +8892,14 @@ class PhoneAuthProvider {
8677
8892
  *
8678
8893
  * @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in
8679
8894
  * E.164 format (e.g. +16505550101).
8680
- * @param applicationVerifier - For abuse prevention, this method also requires a
8681
- * {@link ApplicationVerifier}. This SDK includes a reCAPTCHA-based implementation,
8682
- * {@link RecaptchaVerifier}.
8895
+ * @param applicationVerifier - An {@link ApplicationVerifier}, which prevents
8896
+ * requests from unauthorized clients. This SDK includes an implementation
8897
+ * based on reCAPTCHA v2, {@link RecaptchaVerifier}. If you've enabled
8898
+ * reCAPTCHA Enterprise bot protection in Enforce mode, this parameter is
8899
+ * optional; in all other configurations, the parameter is required.
8683
8900
  *
8684
8901
  * @returns A Promise for a verification ID that can be passed to
8685
- * {@link PhoneAuthProvider.credential} to identify this flow..
8902
+ * {@link PhoneAuthProvider.credential} to identify this flow.
8686
8903
  */
8687
8904
  verifyPhoneNumber(phoneOptions, applicationVerifier) {
8688
8905
  return _verifyPhoneNumber(this.auth, phoneOptions, util.getModularInstance(applicationVerifier));
@@ -10441,7 +10658,7 @@ function _isEmptyString(input) {
10441
10658
  }
10442
10659
 
10443
10660
  var name = "@firebase/auth";
10444
- var version = "1.7.9";
10661
+ var version = "1.8.0";
10445
10662
 
10446
10663
  /**
10447
10664
  * @license
@@ -10583,7 +10800,7 @@ function registerAuth(clientPlatform) {
10583
10800
  return (auth => new AuthInterop(auth))(auth);
10584
10801
  }, "PRIVATE" /* ComponentType.PRIVATE */).setInstantiationMode("EXPLICIT" /* InstantiationMode.EXPLICIT */));
10585
10802
  app.registerVersion(name, version, getVersionForPlatform(clientPlatform));
10586
- // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation
10803
+ // BUILD_TARGET will be replaced by values like esm2017, cjs2017, etc during the compilation
10587
10804
  app.registerVersion(name, version, 'cjs2017');
10588
10805
  }
10589
10806
 
@@ -10802,4 +11019,4 @@ exports.useDeviceLanguage = useDeviceLanguage;
10802
11019
  exports.validatePassword = validatePassword;
10803
11020
  exports.verifyBeforeUpdateEmail = verifyBeforeUpdateEmail;
10804
11021
  exports.verifyPasswordResetCode = verifyPasswordResetCode;
10805
- //# sourceMappingURL=index-e2e765e6.js.map
11022
+ //# sourceMappingURL=index-b60d3212.js.map