@depup/firebase__auth 1.12.1-depup.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 (1606) hide show
  1. package/README.md +31 -0
  2. package/changes.json +10 -0
  3. package/cordova/package.json +7 -0
  4. package/dist/auth-public.d.ts +4067 -0
  5. package/dist/auth.d.ts +4634 -0
  6. package/dist/browser-cjs/index-ac6fb6b2.js +11265 -0
  7. package/dist/browser-cjs/index-ac6fb6b2.js.map +1 -0
  8. package/dist/browser-cjs/index.cordova.d.ts +32 -0
  9. package/dist/browser-cjs/index.d.ts +38 -0
  10. package/dist/browser-cjs/index.doc.d.ts +24 -0
  11. package/dist/browser-cjs/index.js +98 -0
  12. package/dist/browser-cjs/index.js.map +1 -0
  13. package/dist/browser-cjs/index.node.d.ts +17 -0
  14. package/dist/browser-cjs/index.rn.d.ts +40 -0
  15. package/dist/browser-cjs/index.shared.d.ts +19 -0
  16. package/dist/browser-cjs/index.web-extension.d.ts +31 -0
  17. package/dist/browser-cjs/index.webworker.d.ts +21 -0
  18. package/dist/browser-cjs/internal/index.d.ts +42 -0
  19. package/dist/browser-cjs/internal.js +668 -0
  20. package/dist/browser-cjs/internal.js.map +1 -0
  21. package/dist/browser-cjs/scripts/run_node_tests.d.ts +17 -0
  22. package/dist/browser-cjs/src/api/account_management/account.d.ts +59 -0
  23. package/dist/browser-cjs/src/api/account_management/email_and_password.d.ts +49 -0
  24. package/dist/browser-cjs/src/api/account_management/mfa.d.ts +107 -0
  25. package/dist/browser-cjs/src/api/account_management/profile.d.ts +29 -0
  26. package/dist/browser-cjs/src/api/authentication/create_auth_uri.d.ts +26 -0
  27. package/dist/browser-cjs/src/api/authentication/custom_token.d.ts +26 -0
  28. package/dist/browser-cjs/src/api/authentication/email_and_password.d.ts +86 -0
  29. package/dist/browser-cjs/src/api/authentication/email_link.d.ts +32 -0
  30. package/dist/browser-cjs/src/api/authentication/idp.d.ts +40 -0
  31. package/dist/browser-cjs/src/api/authentication/mfa.d.ts +73 -0
  32. package/dist/browser-cjs/src/api/authentication/recaptcha.d.ts +34 -0
  33. package/dist/browser-cjs/src/api/authentication/sign_up.d.ts +34 -0
  34. package/dist/browser-cjs/src/api/authentication/sms.d.ts +54 -0
  35. package/dist/browser-cjs/src/api/authentication/token.d.ts +37 -0
  36. package/dist/browser-cjs/src/api/errors.d.ts +129 -0
  37. package/dist/browser-cjs/src/api/index.d.ts +101 -0
  38. package/dist/browser-cjs/src/api/password_policy/get_password_policy.d.ts +48 -0
  39. package/dist/browser-cjs/src/api/project_config/get_project_config.d.ts +25 -0
  40. package/dist/browser-cjs/src/core/action_code_url.d.ts +73 -0
  41. package/dist/browser-cjs/src/core/auth/auth_event_manager.d.ts +34 -0
  42. package/dist/browser-cjs/src/core/auth/auth_impl.d.ts +133 -0
  43. package/dist/browser-cjs/src/core/auth/emulator.d.ts +42 -0
  44. package/dist/browser-cjs/src/core/auth/firebase_internal.d.ts +35 -0
  45. package/dist/browser-cjs/src/core/auth/initialize.d.ts +46 -0
  46. package/dist/browser-cjs/src/core/auth/middleware.d.ts +25 -0
  47. package/dist/browser-cjs/src/core/auth/password_policy_impl.d.ts +59 -0
  48. package/dist/browser-cjs/src/core/auth/register.d.ts +23 -0
  49. package/dist/browser-cjs/src/core/credentials/auth_credential.d.ts +75 -0
  50. package/dist/browser-cjs/src/core/credentials/email.d.ts +60 -0
  51. package/dist/browser-cjs/src/core/credentials/index.d.ts +23 -0
  52. package/dist/browser-cjs/src/core/credentials/oauth.d.ts +81 -0
  53. package/dist/browser-cjs/src/core/credentials/phone.d.ts +52 -0
  54. package/dist/browser-cjs/src/core/credentials/saml.d.ts +52 -0
  55. package/dist/browser-cjs/src/core/errors.d.ts +328 -0
  56. package/dist/browser-cjs/src/core/index.d.ts +230 -0
  57. package/dist/browser-cjs/src/core/persistence/in_memory.d.ts +35 -0
  58. package/dist/browser-cjs/src/core/persistence/index.d.ts +42 -0
  59. package/dist/browser-cjs/src/core/persistence/persistence_user_manager.d.ts +45 -0
  60. package/dist/browser-cjs/src/core/providers/email.d.ts +83 -0
  61. package/dist/browser-cjs/src/core/providers/facebook.d.ts +93 -0
  62. package/dist/browser-cjs/src/core/providers/federated.d.ts +64 -0
  63. package/dist/browser-cjs/src/core/providers/github.d.ts +89 -0
  64. package/dist/browser-cjs/src/core/providers/google.d.ts +96 -0
  65. package/dist/browser-cjs/src/core/providers/oauth.d.ts +151 -0
  66. package/dist/browser-cjs/src/core/providers/saml.d.ts +62 -0
  67. package/dist/browser-cjs/src/core/providers/twitter.d.ts +103 -0
  68. package/dist/browser-cjs/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  69. package/dist/browser-cjs/src/core/strategies/action_code_settings.d.ts +19 -0
  70. package/dist/browser-cjs/src/core/strategies/anonymous.d.ts +32 -0
  71. package/dist/browser-cjs/src/core/strategies/credential.d.ts +64 -0
  72. package/dist/browser-cjs/src/core/strategies/custom_token.d.ts +37 -0
  73. package/dist/browser-cjs/src/core/strategies/email.d.ts +104 -0
  74. package/dist/browser-cjs/src/core/strategies/email_and_password.d.ts +139 -0
  75. package/dist/browser-cjs/src/core/strategies/email_link.d.ts +107 -0
  76. package/dist/browser-cjs/src/core/strategies/idp.d.ts +32 -0
  77. package/dist/browser-cjs/src/core/strategies/redirect.d.ts +36 -0
  78. package/dist/browser-cjs/src/core/user/account_info.d.ts +68 -0
  79. package/dist/browser-cjs/src/core/user/additional_user_info.d.ts +31 -0
  80. package/dist/browser-cjs/src/core/user/id_token_result.d.ts +48 -0
  81. package/dist/browser-cjs/src/core/user/invalidation.d.ts +18 -0
  82. package/dist/browser-cjs/src/core/user/link_unlink.d.ts +30 -0
  83. package/dist/browser-cjs/src/core/user/proactive_refresh.d.ts +34 -0
  84. package/dist/browser-cjs/src/core/user/reauthenticate.d.ts +20 -0
  85. package/dist/browser-cjs/src/core/user/reload.d.ts +29 -0
  86. package/dist/browser-cjs/src/core/user/token_manager.d.ts +50 -0
  87. package/dist/browser-cjs/src/core/user/user_credential_impl.d.ts +37 -0
  88. package/dist/browser-cjs/src/core/user/user_impl.d.ts +74 -0
  89. package/dist/browser-cjs/src/core/user/user_metadata.d.ts +27 -0
  90. package/dist/browser-cjs/src/core/util/assert.d.ts +94 -0
  91. package/dist/browser-cjs/src/core/util/browser.d.ts +50 -0
  92. package/dist/browser-cjs/src/core/util/delay.d.ts +31 -0
  93. package/dist/browser-cjs/src/core/util/emulator.d.ts +18 -0
  94. package/dist/browser-cjs/src/core/util/event_id.d.ts +17 -0
  95. package/dist/browser-cjs/src/core/util/fetch_provider.d.ts +25 -0
  96. package/dist/browser-cjs/src/core/util/handler.d.ts +20 -0
  97. package/dist/browser-cjs/src/core/util/instantiator.d.ts +28 -0
  98. package/dist/browser-cjs/src/core/util/location.d.ts +19 -0
  99. package/dist/browser-cjs/src/core/util/log.d.ts +23 -0
  100. package/dist/browser-cjs/src/core/util/navigator.d.ts +21 -0
  101. package/dist/browser-cjs/src/core/util/providers.d.ts +23 -0
  102. package/dist/browser-cjs/src/core/util/resolver.d.ts +25 -0
  103. package/dist/browser-cjs/src/core/util/time.d.ts +17 -0
  104. package/dist/browser-cjs/src/core/util/validate_origin.d.ts +18 -0
  105. package/dist/browser-cjs/src/core/util/version.d.ts +31 -0
  106. package/dist/browser-cjs/src/index.d.ts +18 -0
  107. package/dist/browser-cjs/src/mfa/assertions/totp.d.ts +124 -0
  108. package/dist/browser-cjs/src/mfa/index.d.ts +18 -0
  109. package/dist/browser-cjs/src/mfa/mfa_assertion.d.ts +27 -0
  110. package/dist/browser-cjs/src/mfa/mfa_error.d.ts +35 -0
  111. package/dist/browser-cjs/src/mfa/mfa_info.d.ts +36 -0
  112. package/dist/browser-cjs/src/mfa/mfa_resolver.d.ts +41 -0
  113. package/dist/browser-cjs/src/mfa/mfa_session.d.ts +39 -0
  114. package/dist/browser-cjs/src/mfa/mfa_user.d.ts +38 -0
  115. package/dist/browser-cjs/src/model/application_verifier.d.ts +23 -0
  116. package/dist/browser-cjs/src/model/auth.d.ts +90 -0
  117. package/dist/browser-cjs/src/model/enum_maps.d.ts +98 -0
  118. package/dist/browser-cjs/src/model/enums.d.ts +74 -0
  119. package/dist/browser-cjs/src/model/id_token.d.ts +87 -0
  120. package/dist/browser-cjs/src/model/password_policy.d.ts +111 -0
  121. package/dist/browser-cjs/src/model/popup_redirect.d.ts +94 -0
  122. package/dist/browser-cjs/src/model/public_types.d.ts +1291 -0
  123. package/dist/browser-cjs/src/model/user.d.ts +83 -0
  124. package/dist/browser-cjs/src/platform_browser/auth_window.d.ts +37 -0
  125. package/dist/browser-cjs/src/platform_browser/iframe/gapi.d.ts +19 -0
  126. package/dist/browser-cjs/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  127. package/dist/browser-cjs/src/platform_browser/iframe/iframe.d.ts +18 -0
  128. package/dist/browser-cjs/src/platform_browser/index.d.ts +27 -0
  129. package/dist/browser-cjs/src/platform_browser/load_js.d.ts +29 -0
  130. package/dist/browser-cjs/src/platform_browser/messagechannel/index.d.ts +87 -0
  131. package/dist/browser-cjs/src/platform_browser/messagechannel/promise.d.ts +33 -0
  132. package/dist/browser-cjs/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  133. package/dist/browser-cjs/src/platform_browser/messagechannel/sender.d.ts +46 -0
  134. package/dist/browser-cjs/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  135. package/dist/browser-cjs/src/platform_browser/persistence/browser.d.ts +27 -0
  136. package/dist/browser-cjs/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  137. package/dist/browser-cjs/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  138. package/dist/browser-cjs/src/platform_browser/persistence/local_storage.d.ts +25 -0
  139. package/dist/browser-cjs/src/platform_browser/persistence/session_storage.d.ts +24 -0
  140. package/dist/browser-cjs/src/platform_browser/popup_redirect.d.ts +27 -0
  141. package/dist/browser-cjs/src/platform_browser/providers/phone.d.ts +154 -0
  142. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  143. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  144. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  145. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  146. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  147. package/dist/browser-cjs/src/platform_browser/strategies/phone.d.ts +116 -0
  148. package/dist/browser-cjs/src/platform_browser/strategies/popup.d.ts +109 -0
  149. package/dist/browser-cjs/src/platform_browser/strategies/redirect.d.ts +176 -0
  150. package/dist/browser-cjs/src/platform_browser/util/popup.d.ts +24 -0
  151. package/dist/browser-cjs/src/platform_browser/util/worker.d.ts +20 -0
  152. package/dist/browser-cjs/src/platform_cordova/plugins.d.ts +42 -0
  153. package/dist/browser-cjs/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  154. package/dist/browser-cjs/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  155. package/dist/browser-cjs/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  156. package/dist/browser-cjs/src/platform_cordova/strategies/redirect.d.ts +20 -0
  157. package/dist/browser-cjs/src/platform_node/index.d.ts +51 -0
  158. package/dist/browser-cjs/src/platform_react_native/persistence/react_native.d.ts +25 -0
  159. package/dist/browser-cjs/test/helpers/api/helper.d.ts +22 -0
  160. package/dist/browser-cjs/test/helpers/delay.d.ts +20 -0
  161. package/dist/browser-cjs/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  162. package/dist/browser-cjs/test/helpers/fake_service_worker.d.ts +22 -0
  163. package/dist/browser-cjs/test/helpers/id_token_response.d.ts +18 -0
  164. package/dist/browser-cjs/test/helpers/iframe_event.d.ts +19 -0
  165. package/dist/browser-cjs/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  166. package/dist/browser-cjs/test/helpers/integration/helpers.d.ts +32 -0
  167. package/dist/browser-cjs/test/helpers/integration/settings.d.ts +23 -0
  168. package/dist/browser-cjs/test/helpers/jwt.d.ts +17 -0
  169. package/dist/browser-cjs/test/helpers/mock_auth.d.ts +47 -0
  170. package/dist/browser-cjs/test/helpers/mock_auth_credential.d.ts +31 -0
  171. package/dist/browser-cjs/test/helpers/mock_fetch.d.ts +31 -0
  172. package/dist/browser-cjs/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  173. package/dist/browser-cjs/test/helpers/redirect_persistence.d.ts +24 -0
  174. package/dist/browser-cjs/test/helpers/timeout_stub.d.ts +34 -0
  175. package/dist/browser-cjs/test/integration/flows/middleware_test_generator.d.ts +18 -0
  176. package/dist/browser-cjs/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  177. package/dist/browser-cjs/test/integration/webdriver/util/functions.d.ts +81 -0
  178. package/dist/browser-cjs/test/integration/webdriver/util/idp_page.d.ts +31 -0
  179. package/dist/browser-cjs/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  180. package/dist/browser-cjs/test/integration/webdriver/util/test_runner.d.ts +19 -0
  181. package/dist/browser-cjs/test/integration/webdriver/util/test_server.d.ts +27 -0
  182. package/dist/browser-cjs/test/integration/webdriver/util/ui_page.d.ts +33 -0
  183. package/dist/cordova/auth-cordova-public.d.ts +3397 -0
  184. package/dist/cordova/auth-cordova.d.ts +3948 -0
  185. package/dist/cordova/index.cordova.d.ts +32 -0
  186. package/dist/cordova/index.d.ts +38 -0
  187. package/dist/cordova/index.doc.d.ts +24 -0
  188. package/dist/cordova/index.js +63 -0
  189. package/dist/cordova/index.js.map +1 -0
  190. package/dist/cordova/index.node.d.ts +17 -0
  191. package/dist/cordova/index.rn.d.ts +40 -0
  192. package/dist/cordova/index.shared.d.ts +19 -0
  193. package/dist/cordova/index.web-extension.d.ts +31 -0
  194. package/dist/cordova/index.webworker.d.ts +21 -0
  195. package/dist/cordova/internal/index.d.ts +42 -0
  196. package/dist/cordova/internal.js +1986 -0
  197. package/dist/cordova/internal.js.map +1 -0
  198. package/dist/cordova/popup_redirect-29c7321e.js +9735 -0
  199. package/dist/cordova/popup_redirect-29c7321e.js.map +1 -0
  200. package/dist/cordova/scripts/run_node_tests.d.ts +17 -0
  201. package/dist/cordova/src/api/account_management/account.d.ts +59 -0
  202. package/dist/cordova/src/api/account_management/email_and_password.d.ts +49 -0
  203. package/dist/cordova/src/api/account_management/mfa.d.ts +107 -0
  204. package/dist/cordova/src/api/account_management/profile.d.ts +29 -0
  205. package/dist/cordova/src/api/authentication/create_auth_uri.d.ts +26 -0
  206. package/dist/cordova/src/api/authentication/custom_token.d.ts +26 -0
  207. package/dist/cordova/src/api/authentication/email_and_password.d.ts +86 -0
  208. package/dist/cordova/src/api/authentication/email_link.d.ts +32 -0
  209. package/dist/cordova/src/api/authentication/idp.d.ts +40 -0
  210. package/dist/cordova/src/api/authentication/mfa.d.ts +73 -0
  211. package/dist/cordova/src/api/authentication/recaptcha.d.ts +34 -0
  212. package/dist/cordova/src/api/authentication/sign_up.d.ts +34 -0
  213. package/dist/cordova/src/api/authentication/sms.d.ts +54 -0
  214. package/dist/cordova/src/api/authentication/token.d.ts +37 -0
  215. package/dist/cordova/src/api/errors.d.ts +129 -0
  216. package/dist/cordova/src/api/index.d.ts +101 -0
  217. package/dist/cordova/src/api/password_policy/get_password_policy.d.ts +48 -0
  218. package/dist/cordova/src/api/project_config/get_project_config.d.ts +25 -0
  219. package/dist/cordova/src/core/action_code_url.d.ts +73 -0
  220. package/dist/cordova/src/core/auth/auth_event_manager.d.ts +34 -0
  221. package/dist/cordova/src/core/auth/auth_impl.d.ts +133 -0
  222. package/dist/cordova/src/core/auth/emulator.d.ts +42 -0
  223. package/dist/cordova/src/core/auth/firebase_internal.d.ts +35 -0
  224. package/dist/cordova/src/core/auth/initialize.d.ts +46 -0
  225. package/dist/cordova/src/core/auth/middleware.d.ts +25 -0
  226. package/dist/cordova/src/core/auth/password_policy_impl.d.ts +59 -0
  227. package/dist/cordova/src/core/auth/register.d.ts +23 -0
  228. package/dist/cordova/src/core/credentials/auth_credential.d.ts +75 -0
  229. package/dist/cordova/src/core/credentials/email.d.ts +60 -0
  230. package/dist/cordova/src/core/credentials/index.d.ts +23 -0
  231. package/dist/cordova/src/core/credentials/oauth.d.ts +81 -0
  232. package/dist/cordova/src/core/credentials/phone.d.ts +52 -0
  233. package/dist/cordova/src/core/credentials/saml.d.ts +52 -0
  234. package/dist/cordova/src/core/errors.d.ts +328 -0
  235. package/dist/cordova/src/core/index.d.ts +230 -0
  236. package/dist/cordova/src/core/persistence/in_memory.d.ts +35 -0
  237. package/dist/cordova/src/core/persistence/index.d.ts +42 -0
  238. package/dist/cordova/src/core/persistence/persistence_user_manager.d.ts +45 -0
  239. package/dist/cordova/src/core/providers/email.d.ts +83 -0
  240. package/dist/cordova/src/core/providers/facebook.d.ts +93 -0
  241. package/dist/cordova/src/core/providers/federated.d.ts +64 -0
  242. package/dist/cordova/src/core/providers/github.d.ts +89 -0
  243. package/dist/cordova/src/core/providers/google.d.ts +96 -0
  244. package/dist/cordova/src/core/providers/oauth.d.ts +151 -0
  245. package/dist/cordova/src/core/providers/saml.d.ts +62 -0
  246. package/dist/cordova/src/core/providers/twitter.d.ts +103 -0
  247. package/dist/cordova/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  248. package/dist/cordova/src/core/strategies/action_code_settings.d.ts +19 -0
  249. package/dist/cordova/src/core/strategies/anonymous.d.ts +32 -0
  250. package/dist/cordova/src/core/strategies/credential.d.ts +64 -0
  251. package/dist/cordova/src/core/strategies/custom_token.d.ts +37 -0
  252. package/dist/cordova/src/core/strategies/email.d.ts +104 -0
  253. package/dist/cordova/src/core/strategies/email_and_password.d.ts +139 -0
  254. package/dist/cordova/src/core/strategies/email_link.d.ts +107 -0
  255. package/dist/cordova/src/core/strategies/idp.d.ts +32 -0
  256. package/dist/cordova/src/core/strategies/redirect.d.ts +36 -0
  257. package/dist/cordova/src/core/user/account_info.d.ts +68 -0
  258. package/dist/cordova/src/core/user/additional_user_info.d.ts +31 -0
  259. package/dist/cordova/src/core/user/id_token_result.d.ts +48 -0
  260. package/dist/cordova/src/core/user/invalidation.d.ts +18 -0
  261. package/dist/cordova/src/core/user/link_unlink.d.ts +30 -0
  262. package/dist/cordova/src/core/user/proactive_refresh.d.ts +34 -0
  263. package/dist/cordova/src/core/user/reauthenticate.d.ts +20 -0
  264. package/dist/cordova/src/core/user/reload.d.ts +29 -0
  265. package/dist/cordova/src/core/user/token_manager.d.ts +50 -0
  266. package/dist/cordova/src/core/user/user_credential_impl.d.ts +37 -0
  267. package/dist/cordova/src/core/user/user_impl.d.ts +74 -0
  268. package/dist/cordova/src/core/user/user_metadata.d.ts +27 -0
  269. package/dist/cordova/src/core/util/assert.d.ts +94 -0
  270. package/dist/cordova/src/core/util/browser.d.ts +50 -0
  271. package/dist/cordova/src/core/util/delay.d.ts +31 -0
  272. package/dist/cordova/src/core/util/emulator.d.ts +18 -0
  273. package/dist/cordova/src/core/util/event_id.d.ts +17 -0
  274. package/dist/cordova/src/core/util/fetch_provider.d.ts +25 -0
  275. package/dist/cordova/src/core/util/handler.d.ts +20 -0
  276. package/dist/cordova/src/core/util/instantiator.d.ts +28 -0
  277. package/dist/cordova/src/core/util/location.d.ts +19 -0
  278. package/dist/cordova/src/core/util/log.d.ts +23 -0
  279. package/dist/cordova/src/core/util/navigator.d.ts +21 -0
  280. package/dist/cordova/src/core/util/providers.d.ts +23 -0
  281. package/dist/cordova/src/core/util/resolver.d.ts +25 -0
  282. package/dist/cordova/src/core/util/time.d.ts +17 -0
  283. package/dist/cordova/src/core/util/validate_origin.d.ts +18 -0
  284. package/dist/cordova/src/core/util/version.d.ts +31 -0
  285. package/dist/cordova/src/index.d.ts +18 -0
  286. package/dist/cordova/src/mfa/assertions/totp.d.ts +124 -0
  287. package/dist/cordova/src/mfa/index.d.ts +18 -0
  288. package/dist/cordova/src/mfa/mfa_assertion.d.ts +27 -0
  289. package/dist/cordova/src/mfa/mfa_error.d.ts +35 -0
  290. package/dist/cordova/src/mfa/mfa_info.d.ts +36 -0
  291. package/dist/cordova/src/mfa/mfa_resolver.d.ts +41 -0
  292. package/dist/cordova/src/mfa/mfa_session.d.ts +39 -0
  293. package/dist/cordova/src/mfa/mfa_user.d.ts +38 -0
  294. package/dist/cordova/src/model/application_verifier.d.ts +23 -0
  295. package/dist/cordova/src/model/auth.d.ts +90 -0
  296. package/dist/cordova/src/model/enum_maps.d.ts +98 -0
  297. package/dist/cordova/src/model/enums.d.ts +74 -0
  298. package/dist/cordova/src/model/id_token.d.ts +87 -0
  299. package/dist/cordova/src/model/password_policy.d.ts +111 -0
  300. package/dist/cordova/src/model/popup_redirect.d.ts +94 -0
  301. package/dist/cordova/src/model/public_types.d.ts +1291 -0
  302. package/dist/cordova/src/model/user.d.ts +83 -0
  303. package/dist/cordova/src/platform_browser/auth_window.d.ts +37 -0
  304. package/dist/cordova/src/platform_browser/iframe/gapi.d.ts +19 -0
  305. package/dist/cordova/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  306. package/dist/cordova/src/platform_browser/iframe/iframe.d.ts +18 -0
  307. package/dist/cordova/src/platform_browser/index.d.ts +27 -0
  308. package/dist/cordova/src/platform_browser/load_js.d.ts +29 -0
  309. package/dist/cordova/src/platform_browser/messagechannel/index.d.ts +87 -0
  310. package/dist/cordova/src/platform_browser/messagechannel/promise.d.ts +33 -0
  311. package/dist/cordova/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  312. package/dist/cordova/src/platform_browser/messagechannel/sender.d.ts +46 -0
  313. package/dist/cordova/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  314. package/dist/cordova/src/platform_browser/persistence/browser.d.ts +27 -0
  315. package/dist/cordova/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  316. package/dist/cordova/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  317. package/dist/cordova/src/platform_browser/persistence/local_storage.d.ts +25 -0
  318. package/dist/cordova/src/platform_browser/persistence/session_storage.d.ts +24 -0
  319. package/dist/cordova/src/platform_browser/popup_redirect.d.ts +27 -0
  320. package/dist/cordova/src/platform_browser/providers/phone.d.ts +154 -0
  321. package/dist/cordova/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  322. package/dist/cordova/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  323. package/dist/cordova/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  324. package/dist/cordova/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  325. package/dist/cordova/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  326. package/dist/cordova/src/platform_browser/strategies/phone.d.ts +116 -0
  327. package/dist/cordova/src/platform_browser/strategies/popup.d.ts +109 -0
  328. package/dist/cordova/src/platform_browser/strategies/redirect.d.ts +176 -0
  329. package/dist/cordova/src/platform_browser/util/popup.d.ts +24 -0
  330. package/dist/cordova/src/platform_browser/util/worker.d.ts +20 -0
  331. package/dist/cordova/src/platform_cordova/plugins.d.ts +42 -0
  332. package/dist/cordova/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  333. package/dist/cordova/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  334. package/dist/cordova/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  335. package/dist/cordova/src/platform_cordova/strategies/redirect.d.ts +20 -0
  336. package/dist/cordova/src/platform_node/index.d.ts +51 -0
  337. package/dist/cordova/src/platform_react_native/persistence/react_native.d.ts +25 -0
  338. package/dist/cordova/test/helpers/api/helper.d.ts +22 -0
  339. package/dist/cordova/test/helpers/delay.d.ts +20 -0
  340. package/dist/cordova/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  341. package/dist/cordova/test/helpers/fake_service_worker.d.ts +22 -0
  342. package/dist/cordova/test/helpers/id_token_response.d.ts +18 -0
  343. package/dist/cordova/test/helpers/iframe_event.d.ts +19 -0
  344. package/dist/cordova/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  345. package/dist/cordova/test/helpers/integration/helpers.d.ts +32 -0
  346. package/dist/cordova/test/helpers/integration/settings.d.ts +23 -0
  347. package/dist/cordova/test/helpers/jwt.d.ts +17 -0
  348. package/dist/cordova/test/helpers/mock_auth.d.ts +47 -0
  349. package/dist/cordova/test/helpers/mock_auth_credential.d.ts +31 -0
  350. package/dist/cordova/test/helpers/mock_fetch.d.ts +31 -0
  351. package/dist/cordova/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  352. package/dist/cordova/test/helpers/redirect_persistence.d.ts +24 -0
  353. package/dist/cordova/test/helpers/timeout_stub.d.ts +34 -0
  354. package/dist/cordova/test/integration/flows/middleware_test_generator.d.ts +18 -0
  355. package/dist/cordova/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  356. package/dist/cordova/test/integration/webdriver/util/functions.d.ts +81 -0
  357. package/dist/cordova/test/integration/webdriver/util/idp_page.d.ts +31 -0
  358. package/dist/cordova/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  359. package/dist/cordova/test/integration/webdriver/util/test_runner.d.ts +19 -0
  360. package/dist/cordova/test/integration/webdriver/util/test_server.d.ts +27 -0
  361. package/dist/cordova/test/integration/webdriver/util/ui_page.d.ts +33 -0
  362. package/dist/cordova/tsdoc-metadata.json +11 -0
  363. package/dist/esm/index-3398f4bb.js +11156 -0
  364. package/dist/esm/index-3398f4bb.js.map +1 -0
  365. package/dist/esm/index.cordova.d.ts +32 -0
  366. package/dist/esm/index.d.ts +38 -0
  367. package/dist/esm/index.doc.d.ts +24 -0
  368. package/dist/esm/index.js +6 -0
  369. package/dist/esm/index.js.map +1 -0
  370. package/dist/esm/index.node.d.ts +17 -0
  371. package/dist/esm/index.rn.d.ts +40 -0
  372. package/dist/esm/index.shared.d.ts +19 -0
  373. package/dist/esm/index.web-extension.d.ts +31 -0
  374. package/dist/esm/index.webworker.d.ts +21 -0
  375. package/dist/esm/internal/index.d.ts +42 -0
  376. package/dist/esm/internal.js +565 -0
  377. package/dist/esm/internal.js.map +1 -0
  378. package/dist/esm/scripts/run_node_tests.d.ts +17 -0
  379. package/dist/esm/src/api/account_management/account.d.ts +59 -0
  380. package/dist/esm/src/api/account_management/email_and_password.d.ts +49 -0
  381. package/dist/esm/src/api/account_management/mfa.d.ts +107 -0
  382. package/dist/esm/src/api/account_management/profile.d.ts +29 -0
  383. package/dist/esm/src/api/authentication/create_auth_uri.d.ts +26 -0
  384. package/dist/esm/src/api/authentication/custom_token.d.ts +26 -0
  385. package/dist/esm/src/api/authentication/email_and_password.d.ts +86 -0
  386. package/dist/esm/src/api/authentication/email_link.d.ts +32 -0
  387. package/dist/esm/src/api/authentication/idp.d.ts +40 -0
  388. package/dist/esm/src/api/authentication/mfa.d.ts +73 -0
  389. package/dist/esm/src/api/authentication/recaptcha.d.ts +34 -0
  390. package/dist/esm/src/api/authentication/sign_up.d.ts +34 -0
  391. package/dist/esm/src/api/authentication/sms.d.ts +54 -0
  392. package/dist/esm/src/api/authentication/token.d.ts +37 -0
  393. package/dist/esm/src/api/errors.d.ts +129 -0
  394. package/dist/esm/src/api/index.d.ts +101 -0
  395. package/dist/esm/src/api/password_policy/get_password_policy.d.ts +48 -0
  396. package/dist/esm/src/api/project_config/get_project_config.d.ts +25 -0
  397. package/dist/esm/src/core/action_code_url.d.ts +73 -0
  398. package/dist/esm/src/core/auth/auth_event_manager.d.ts +34 -0
  399. package/dist/esm/src/core/auth/auth_impl.d.ts +133 -0
  400. package/dist/esm/src/core/auth/emulator.d.ts +42 -0
  401. package/dist/esm/src/core/auth/firebase_internal.d.ts +35 -0
  402. package/dist/esm/src/core/auth/initialize.d.ts +46 -0
  403. package/dist/esm/src/core/auth/middleware.d.ts +25 -0
  404. package/dist/esm/src/core/auth/password_policy_impl.d.ts +59 -0
  405. package/dist/esm/src/core/auth/register.d.ts +23 -0
  406. package/dist/esm/src/core/credentials/auth_credential.d.ts +75 -0
  407. package/dist/esm/src/core/credentials/email.d.ts +60 -0
  408. package/dist/esm/src/core/credentials/index.d.ts +23 -0
  409. package/dist/esm/src/core/credentials/oauth.d.ts +81 -0
  410. package/dist/esm/src/core/credentials/phone.d.ts +52 -0
  411. package/dist/esm/src/core/credentials/saml.d.ts +52 -0
  412. package/dist/esm/src/core/errors.d.ts +328 -0
  413. package/dist/esm/src/core/index.d.ts +230 -0
  414. package/dist/esm/src/core/persistence/in_memory.d.ts +35 -0
  415. package/dist/esm/src/core/persistence/index.d.ts +42 -0
  416. package/dist/esm/src/core/persistence/persistence_user_manager.d.ts +45 -0
  417. package/dist/esm/src/core/providers/email.d.ts +83 -0
  418. package/dist/esm/src/core/providers/facebook.d.ts +93 -0
  419. package/dist/esm/src/core/providers/federated.d.ts +64 -0
  420. package/dist/esm/src/core/providers/github.d.ts +89 -0
  421. package/dist/esm/src/core/providers/google.d.ts +96 -0
  422. package/dist/esm/src/core/providers/oauth.d.ts +151 -0
  423. package/dist/esm/src/core/providers/saml.d.ts +62 -0
  424. package/dist/esm/src/core/providers/twitter.d.ts +103 -0
  425. package/dist/esm/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  426. package/dist/esm/src/core/strategies/action_code_settings.d.ts +19 -0
  427. package/dist/esm/src/core/strategies/anonymous.d.ts +32 -0
  428. package/dist/esm/src/core/strategies/credential.d.ts +64 -0
  429. package/dist/esm/src/core/strategies/custom_token.d.ts +37 -0
  430. package/dist/esm/src/core/strategies/email.d.ts +104 -0
  431. package/dist/esm/src/core/strategies/email_and_password.d.ts +139 -0
  432. package/dist/esm/src/core/strategies/email_link.d.ts +107 -0
  433. package/dist/esm/src/core/strategies/idp.d.ts +32 -0
  434. package/dist/esm/src/core/strategies/redirect.d.ts +36 -0
  435. package/dist/esm/src/core/user/account_info.d.ts +68 -0
  436. package/dist/esm/src/core/user/additional_user_info.d.ts +31 -0
  437. package/dist/esm/src/core/user/id_token_result.d.ts +48 -0
  438. package/dist/esm/src/core/user/invalidation.d.ts +18 -0
  439. package/dist/esm/src/core/user/link_unlink.d.ts +30 -0
  440. package/dist/esm/src/core/user/proactive_refresh.d.ts +34 -0
  441. package/dist/esm/src/core/user/reauthenticate.d.ts +20 -0
  442. package/dist/esm/src/core/user/reload.d.ts +29 -0
  443. package/dist/esm/src/core/user/token_manager.d.ts +50 -0
  444. package/dist/esm/src/core/user/user_credential_impl.d.ts +37 -0
  445. package/dist/esm/src/core/user/user_impl.d.ts +74 -0
  446. package/dist/esm/src/core/user/user_metadata.d.ts +27 -0
  447. package/dist/esm/src/core/util/assert.d.ts +94 -0
  448. package/dist/esm/src/core/util/browser.d.ts +50 -0
  449. package/dist/esm/src/core/util/delay.d.ts +31 -0
  450. package/dist/esm/src/core/util/emulator.d.ts +18 -0
  451. package/dist/esm/src/core/util/event_id.d.ts +17 -0
  452. package/dist/esm/src/core/util/fetch_provider.d.ts +25 -0
  453. package/dist/esm/src/core/util/handler.d.ts +20 -0
  454. package/dist/esm/src/core/util/instantiator.d.ts +28 -0
  455. package/dist/esm/src/core/util/location.d.ts +19 -0
  456. package/dist/esm/src/core/util/log.d.ts +23 -0
  457. package/dist/esm/src/core/util/navigator.d.ts +21 -0
  458. package/dist/esm/src/core/util/providers.d.ts +23 -0
  459. package/dist/esm/src/core/util/resolver.d.ts +25 -0
  460. package/dist/esm/src/core/util/time.d.ts +17 -0
  461. package/dist/esm/src/core/util/validate_origin.d.ts +18 -0
  462. package/dist/esm/src/core/util/version.d.ts +31 -0
  463. package/dist/esm/src/index.d.ts +18 -0
  464. package/dist/esm/src/mfa/assertions/totp.d.ts +124 -0
  465. package/dist/esm/src/mfa/index.d.ts +18 -0
  466. package/dist/esm/src/mfa/mfa_assertion.d.ts +27 -0
  467. package/dist/esm/src/mfa/mfa_error.d.ts +35 -0
  468. package/dist/esm/src/mfa/mfa_info.d.ts +36 -0
  469. package/dist/esm/src/mfa/mfa_resolver.d.ts +41 -0
  470. package/dist/esm/src/mfa/mfa_session.d.ts +39 -0
  471. package/dist/esm/src/mfa/mfa_user.d.ts +38 -0
  472. package/dist/esm/src/model/application_verifier.d.ts +23 -0
  473. package/dist/esm/src/model/auth.d.ts +90 -0
  474. package/dist/esm/src/model/enum_maps.d.ts +98 -0
  475. package/dist/esm/src/model/enums.d.ts +74 -0
  476. package/dist/esm/src/model/id_token.d.ts +87 -0
  477. package/dist/esm/src/model/password_policy.d.ts +111 -0
  478. package/dist/esm/src/model/popup_redirect.d.ts +94 -0
  479. package/dist/esm/src/model/public_types.d.ts +1291 -0
  480. package/dist/esm/src/model/user.d.ts +83 -0
  481. package/dist/esm/src/platform_browser/auth_window.d.ts +37 -0
  482. package/dist/esm/src/platform_browser/iframe/gapi.d.ts +19 -0
  483. package/dist/esm/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  484. package/dist/esm/src/platform_browser/iframe/iframe.d.ts +18 -0
  485. package/dist/esm/src/platform_browser/index.d.ts +27 -0
  486. package/dist/esm/src/platform_browser/load_js.d.ts +29 -0
  487. package/dist/esm/src/platform_browser/messagechannel/index.d.ts +87 -0
  488. package/dist/esm/src/platform_browser/messagechannel/promise.d.ts +33 -0
  489. package/dist/esm/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  490. package/dist/esm/src/platform_browser/messagechannel/sender.d.ts +46 -0
  491. package/dist/esm/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  492. package/dist/esm/src/platform_browser/persistence/browser.d.ts +27 -0
  493. package/dist/esm/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  494. package/dist/esm/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  495. package/dist/esm/src/platform_browser/persistence/local_storage.d.ts +25 -0
  496. package/dist/esm/src/platform_browser/persistence/session_storage.d.ts +24 -0
  497. package/dist/esm/src/platform_browser/popup_redirect.d.ts +27 -0
  498. package/dist/esm/src/platform_browser/providers/phone.d.ts +154 -0
  499. package/dist/esm/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  500. package/dist/esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  501. package/dist/esm/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  502. package/dist/esm/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  503. package/dist/esm/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  504. package/dist/esm/src/platform_browser/strategies/phone.d.ts +116 -0
  505. package/dist/esm/src/platform_browser/strategies/popup.d.ts +109 -0
  506. package/dist/esm/src/platform_browser/strategies/redirect.d.ts +176 -0
  507. package/dist/esm/src/platform_browser/util/popup.d.ts +24 -0
  508. package/dist/esm/src/platform_browser/util/worker.d.ts +20 -0
  509. package/dist/esm/src/platform_cordova/plugins.d.ts +42 -0
  510. package/dist/esm/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  511. package/dist/esm/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  512. package/dist/esm/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  513. package/dist/esm/src/platform_cordova/strategies/redirect.d.ts +20 -0
  514. package/dist/esm/src/platform_node/index.d.ts +51 -0
  515. package/dist/esm/src/platform_react_native/persistence/react_native.d.ts +25 -0
  516. package/dist/esm/test/helpers/api/helper.d.ts +22 -0
  517. package/dist/esm/test/helpers/delay.d.ts +20 -0
  518. package/dist/esm/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  519. package/dist/esm/test/helpers/fake_service_worker.d.ts +22 -0
  520. package/dist/esm/test/helpers/id_token_response.d.ts +18 -0
  521. package/dist/esm/test/helpers/iframe_event.d.ts +19 -0
  522. package/dist/esm/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  523. package/dist/esm/test/helpers/integration/helpers.d.ts +32 -0
  524. package/dist/esm/test/helpers/integration/settings.d.ts +23 -0
  525. package/dist/esm/test/helpers/jwt.d.ts +17 -0
  526. package/dist/esm/test/helpers/mock_auth.d.ts +47 -0
  527. package/dist/esm/test/helpers/mock_auth_credential.d.ts +31 -0
  528. package/dist/esm/test/helpers/mock_fetch.d.ts +31 -0
  529. package/dist/esm/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  530. package/dist/esm/test/helpers/redirect_persistence.d.ts +24 -0
  531. package/dist/esm/test/helpers/timeout_stub.d.ts +34 -0
  532. package/dist/esm/test/integration/flows/middleware_test_generator.d.ts +18 -0
  533. package/dist/esm/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  534. package/dist/esm/test/integration/webdriver/util/functions.d.ts +81 -0
  535. package/dist/esm/test/integration/webdriver/util/idp_page.d.ts +31 -0
  536. package/dist/esm/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  537. package/dist/esm/test/integration/webdriver/util/test_runner.d.ts +19 -0
  538. package/dist/esm/test/integration/webdriver/util/test_server.d.ts +27 -0
  539. package/dist/esm/test/integration/webdriver/util/ui_page.d.ts +33 -0
  540. package/dist/index.cordova.d.ts +32 -0
  541. package/dist/index.d.ts +38 -0
  542. package/dist/index.doc.d.ts +24 -0
  543. package/dist/index.node.d.ts +17 -0
  544. package/dist/index.rn.d.ts +40 -0
  545. package/dist/index.shared.d.ts +19 -0
  546. package/dist/index.web-extension.d.ts +31 -0
  547. package/dist/index.webworker.d.ts +21 -0
  548. package/dist/index.webworker.js +8021 -0
  549. package/dist/index.webworker.js.map +1 -0
  550. package/dist/internal/index.d.ts +42 -0
  551. package/dist/node/index.cordova.d.ts +32 -0
  552. package/dist/node/index.d.ts +38 -0
  553. package/dist/node/index.doc.d.ts +24 -0
  554. package/dist/node/index.js +98 -0
  555. package/dist/node/index.js.map +1 -0
  556. package/dist/node/index.node.d.ts +17 -0
  557. package/dist/node/index.rn.d.ts +40 -0
  558. package/dist/node/index.shared.d.ts +19 -0
  559. package/dist/node/index.web-extension.d.ts +31 -0
  560. package/dist/node/index.webworker.d.ts +21 -0
  561. package/dist/node/internal/index.d.ts +42 -0
  562. package/dist/node/internal.js +1543 -0
  563. package/dist/node/internal.js.map +1 -0
  564. package/dist/node/scripts/run_node_tests.d.ts +17 -0
  565. package/dist/node/src/api/account_management/account.d.ts +59 -0
  566. package/dist/node/src/api/account_management/email_and_password.d.ts +49 -0
  567. package/dist/node/src/api/account_management/mfa.d.ts +107 -0
  568. package/dist/node/src/api/account_management/profile.d.ts +29 -0
  569. package/dist/node/src/api/authentication/create_auth_uri.d.ts +26 -0
  570. package/dist/node/src/api/authentication/custom_token.d.ts +26 -0
  571. package/dist/node/src/api/authentication/email_and_password.d.ts +86 -0
  572. package/dist/node/src/api/authentication/email_link.d.ts +32 -0
  573. package/dist/node/src/api/authentication/idp.d.ts +40 -0
  574. package/dist/node/src/api/authentication/mfa.d.ts +73 -0
  575. package/dist/node/src/api/authentication/recaptcha.d.ts +34 -0
  576. package/dist/node/src/api/authentication/sign_up.d.ts +34 -0
  577. package/dist/node/src/api/authentication/sms.d.ts +54 -0
  578. package/dist/node/src/api/authentication/token.d.ts +37 -0
  579. package/dist/node/src/api/errors.d.ts +129 -0
  580. package/dist/node/src/api/index.d.ts +101 -0
  581. package/dist/node/src/api/password_policy/get_password_policy.d.ts +48 -0
  582. package/dist/node/src/api/project_config/get_project_config.d.ts +25 -0
  583. package/dist/node/src/core/action_code_url.d.ts +73 -0
  584. package/dist/node/src/core/auth/auth_event_manager.d.ts +34 -0
  585. package/dist/node/src/core/auth/auth_impl.d.ts +133 -0
  586. package/dist/node/src/core/auth/emulator.d.ts +42 -0
  587. package/dist/node/src/core/auth/firebase_internal.d.ts +35 -0
  588. package/dist/node/src/core/auth/initialize.d.ts +46 -0
  589. package/dist/node/src/core/auth/middleware.d.ts +25 -0
  590. package/dist/node/src/core/auth/password_policy_impl.d.ts +59 -0
  591. package/dist/node/src/core/auth/register.d.ts +23 -0
  592. package/dist/node/src/core/credentials/auth_credential.d.ts +75 -0
  593. package/dist/node/src/core/credentials/email.d.ts +60 -0
  594. package/dist/node/src/core/credentials/index.d.ts +23 -0
  595. package/dist/node/src/core/credentials/oauth.d.ts +81 -0
  596. package/dist/node/src/core/credentials/phone.d.ts +52 -0
  597. package/dist/node/src/core/credentials/saml.d.ts +52 -0
  598. package/dist/node/src/core/errors.d.ts +328 -0
  599. package/dist/node/src/core/index.d.ts +230 -0
  600. package/dist/node/src/core/persistence/in_memory.d.ts +35 -0
  601. package/dist/node/src/core/persistence/index.d.ts +42 -0
  602. package/dist/node/src/core/persistence/persistence_user_manager.d.ts +45 -0
  603. package/dist/node/src/core/providers/email.d.ts +83 -0
  604. package/dist/node/src/core/providers/facebook.d.ts +93 -0
  605. package/dist/node/src/core/providers/federated.d.ts +64 -0
  606. package/dist/node/src/core/providers/github.d.ts +89 -0
  607. package/dist/node/src/core/providers/google.d.ts +96 -0
  608. package/dist/node/src/core/providers/oauth.d.ts +151 -0
  609. package/dist/node/src/core/providers/saml.d.ts +62 -0
  610. package/dist/node/src/core/providers/twitter.d.ts +103 -0
  611. package/dist/node/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  612. package/dist/node/src/core/strategies/action_code_settings.d.ts +19 -0
  613. package/dist/node/src/core/strategies/anonymous.d.ts +32 -0
  614. package/dist/node/src/core/strategies/credential.d.ts +64 -0
  615. package/dist/node/src/core/strategies/custom_token.d.ts +37 -0
  616. package/dist/node/src/core/strategies/email.d.ts +104 -0
  617. package/dist/node/src/core/strategies/email_and_password.d.ts +139 -0
  618. package/dist/node/src/core/strategies/email_link.d.ts +107 -0
  619. package/dist/node/src/core/strategies/idp.d.ts +32 -0
  620. package/dist/node/src/core/strategies/redirect.d.ts +36 -0
  621. package/dist/node/src/core/user/account_info.d.ts +68 -0
  622. package/dist/node/src/core/user/additional_user_info.d.ts +31 -0
  623. package/dist/node/src/core/user/id_token_result.d.ts +48 -0
  624. package/dist/node/src/core/user/invalidation.d.ts +18 -0
  625. package/dist/node/src/core/user/link_unlink.d.ts +30 -0
  626. package/dist/node/src/core/user/proactive_refresh.d.ts +34 -0
  627. package/dist/node/src/core/user/reauthenticate.d.ts +20 -0
  628. package/dist/node/src/core/user/reload.d.ts +29 -0
  629. package/dist/node/src/core/user/token_manager.d.ts +50 -0
  630. package/dist/node/src/core/user/user_credential_impl.d.ts +37 -0
  631. package/dist/node/src/core/user/user_impl.d.ts +74 -0
  632. package/dist/node/src/core/user/user_metadata.d.ts +27 -0
  633. package/dist/node/src/core/util/assert.d.ts +94 -0
  634. package/dist/node/src/core/util/browser.d.ts +50 -0
  635. package/dist/node/src/core/util/delay.d.ts +31 -0
  636. package/dist/node/src/core/util/emulator.d.ts +18 -0
  637. package/dist/node/src/core/util/event_id.d.ts +17 -0
  638. package/dist/node/src/core/util/fetch_provider.d.ts +25 -0
  639. package/dist/node/src/core/util/handler.d.ts +20 -0
  640. package/dist/node/src/core/util/instantiator.d.ts +28 -0
  641. package/dist/node/src/core/util/location.d.ts +19 -0
  642. package/dist/node/src/core/util/log.d.ts +23 -0
  643. package/dist/node/src/core/util/navigator.d.ts +21 -0
  644. package/dist/node/src/core/util/providers.d.ts +23 -0
  645. package/dist/node/src/core/util/resolver.d.ts +25 -0
  646. package/dist/node/src/core/util/time.d.ts +17 -0
  647. package/dist/node/src/core/util/validate_origin.d.ts +18 -0
  648. package/dist/node/src/core/util/version.d.ts +31 -0
  649. package/dist/node/src/index.d.ts +18 -0
  650. package/dist/node/src/mfa/assertions/totp.d.ts +124 -0
  651. package/dist/node/src/mfa/index.d.ts +18 -0
  652. package/dist/node/src/mfa/mfa_assertion.d.ts +27 -0
  653. package/dist/node/src/mfa/mfa_error.d.ts +35 -0
  654. package/dist/node/src/mfa/mfa_info.d.ts +36 -0
  655. package/dist/node/src/mfa/mfa_resolver.d.ts +41 -0
  656. package/dist/node/src/mfa/mfa_session.d.ts +39 -0
  657. package/dist/node/src/mfa/mfa_user.d.ts +38 -0
  658. package/dist/node/src/model/application_verifier.d.ts +23 -0
  659. package/dist/node/src/model/auth.d.ts +90 -0
  660. package/dist/node/src/model/enum_maps.d.ts +98 -0
  661. package/dist/node/src/model/enums.d.ts +74 -0
  662. package/dist/node/src/model/id_token.d.ts +87 -0
  663. package/dist/node/src/model/password_policy.d.ts +111 -0
  664. package/dist/node/src/model/popup_redirect.d.ts +94 -0
  665. package/dist/node/src/model/public_types.d.ts +1291 -0
  666. package/dist/node/src/model/user.d.ts +83 -0
  667. package/dist/node/src/platform_browser/auth_window.d.ts +37 -0
  668. package/dist/node/src/platform_browser/iframe/gapi.d.ts +19 -0
  669. package/dist/node/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  670. package/dist/node/src/platform_browser/iframe/iframe.d.ts +18 -0
  671. package/dist/node/src/platform_browser/index.d.ts +27 -0
  672. package/dist/node/src/platform_browser/load_js.d.ts +29 -0
  673. package/dist/node/src/platform_browser/messagechannel/index.d.ts +87 -0
  674. package/dist/node/src/platform_browser/messagechannel/promise.d.ts +33 -0
  675. package/dist/node/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  676. package/dist/node/src/platform_browser/messagechannel/sender.d.ts +46 -0
  677. package/dist/node/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  678. package/dist/node/src/platform_browser/persistence/browser.d.ts +27 -0
  679. package/dist/node/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  680. package/dist/node/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  681. package/dist/node/src/platform_browser/persistence/local_storage.d.ts +25 -0
  682. package/dist/node/src/platform_browser/persistence/session_storage.d.ts +24 -0
  683. package/dist/node/src/platform_browser/popup_redirect.d.ts +27 -0
  684. package/dist/node/src/platform_browser/providers/phone.d.ts +154 -0
  685. package/dist/node/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  686. package/dist/node/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  687. package/dist/node/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  688. package/dist/node/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  689. package/dist/node/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  690. package/dist/node/src/platform_browser/strategies/phone.d.ts +116 -0
  691. package/dist/node/src/platform_browser/strategies/popup.d.ts +109 -0
  692. package/dist/node/src/platform_browser/strategies/redirect.d.ts +176 -0
  693. package/dist/node/src/platform_browser/util/popup.d.ts +24 -0
  694. package/dist/node/src/platform_browser/util/worker.d.ts +20 -0
  695. package/dist/node/src/platform_cordova/plugins.d.ts +42 -0
  696. package/dist/node/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  697. package/dist/node/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  698. package/dist/node/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  699. package/dist/node/src/platform_cordova/strategies/redirect.d.ts +20 -0
  700. package/dist/node/src/platform_node/index.d.ts +51 -0
  701. package/dist/node/src/platform_react_native/persistence/react_native.d.ts +25 -0
  702. package/dist/node/test/helpers/api/helper.d.ts +22 -0
  703. package/dist/node/test/helpers/delay.d.ts +20 -0
  704. package/dist/node/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  705. package/dist/node/test/helpers/fake_service_worker.d.ts +22 -0
  706. package/dist/node/test/helpers/id_token_response.d.ts +18 -0
  707. package/dist/node/test/helpers/iframe_event.d.ts +19 -0
  708. package/dist/node/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  709. package/dist/node/test/helpers/integration/helpers.d.ts +32 -0
  710. package/dist/node/test/helpers/integration/settings.d.ts +23 -0
  711. package/dist/node/test/helpers/jwt.d.ts +17 -0
  712. package/dist/node/test/helpers/mock_auth.d.ts +47 -0
  713. package/dist/node/test/helpers/mock_auth_credential.d.ts +31 -0
  714. package/dist/node/test/helpers/mock_fetch.d.ts +31 -0
  715. package/dist/node/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  716. package/dist/node/test/helpers/redirect_persistence.d.ts +24 -0
  717. package/dist/node/test/helpers/timeout_stub.d.ts +34 -0
  718. package/dist/node/test/integration/flows/middleware_test_generator.d.ts +18 -0
  719. package/dist/node/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  720. package/dist/node/test/integration/webdriver/util/functions.d.ts +81 -0
  721. package/dist/node/test/integration/webdriver/util/idp_page.d.ts +31 -0
  722. package/dist/node/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  723. package/dist/node/test/integration/webdriver/util/test_runner.d.ts +19 -0
  724. package/dist/node/test/integration/webdriver/util/test_server.d.ts +27 -0
  725. package/dist/node/test/integration/webdriver/util/ui_page.d.ts +33 -0
  726. package/dist/node/totp-e822713d.js +7693 -0
  727. package/dist/node/totp-e822713d.js.map +1 -0
  728. package/dist/node-esm/index.cordova.d.ts +32 -0
  729. package/dist/node-esm/index.d.ts +38 -0
  730. package/dist/node-esm/index.doc.d.ts +24 -0
  731. package/dist/node-esm/index.js +6 -0
  732. package/dist/node-esm/index.js.map +1 -0
  733. package/dist/node-esm/index.node.d.ts +17 -0
  734. package/dist/node-esm/index.rn.d.ts +40 -0
  735. package/dist/node-esm/index.shared.d.ts +19 -0
  736. package/dist/node-esm/index.web-extension.d.ts +31 -0
  737. package/dist/node-esm/index.webworker.d.ts +21 -0
  738. package/dist/node-esm/internal/index.d.ts +42 -0
  739. package/dist/node-esm/internal.js +1440 -0
  740. package/dist/node-esm/internal.js.map +1 -0
  741. package/dist/node-esm/package.json +1 -0
  742. package/dist/node-esm/scripts/run_node_tests.d.ts +17 -0
  743. package/dist/node-esm/src/api/account_management/account.d.ts +59 -0
  744. package/dist/node-esm/src/api/account_management/email_and_password.d.ts +49 -0
  745. package/dist/node-esm/src/api/account_management/mfa.d.ts +107 -0
  746. package/dist/node-esm/src/api/account_management/profile.d.ts +29 -0
  747. package/dist/node-esm/src/api/authentication/create_auth_uri.d.ts +26 -0
  748. package/dist/node-esm/src/api/authentication/custom_token.d.ts +26 -0
  749. package/dist/node-esm/src/api/authentication/email_and_password.d.ts +86 -0
  750. package/dist/node-esm/src/api/authentication/email_link.d.ts +32 -0
  751. package/dist/node-esm/src/api/authentication/idp.d.ts +40 -0
  752. package/dist/node-esm/src/api/authentication/mfa.d.ts +73 -0
  753. package/dist/node-esm/src/api/authentication/recaptcha.d.ts +34 -0
  754. package/dist/node-esm/src/api/authentication/sign_up.d.ts +34 -0
  755. package/dist/node-esm/src/api/authentication/sms.d.ts +54 -0
  756. package/dist/node-esm/src/api/authentication/token.d.ts +37 -0
  757. package/dist/node-esm/src/api/errors.d.ts +129 -0
  758. package/dist/node-esm/src/api/index.d.ts +101 -0
  759. package/dist/node-esm/src/api/password_policy/get_password_policy.d.ts +48 -0
  760. package/dist/node-esm/src/api/project_config/get_project_config.d.ts +25 -0
  761. package/dist/node-esm/src/core/action_code_url.d.ts +73 -0
  762. package/dist/node-esm/src/core/auth/auth_event_manager.d.ts +34 -0
  763. package/dist/node-esm/src/core/auth/auth_impl.d.ts +133 -0
  764. package/dist/node-esm/src/core/auth/emulator.d.ts +42 -0
  765. package/dist/node-esm/src/core/auth/firebase_internal.d.ts +35 -0
  766. package/dist/node-esm/src/core/auth/initialize.d.ts +46 -0
  767. package/dist/node-esm/src/core/auth/middleware.d.ts +25 -0
  768. package/dist/node-esm/src/core/auth/password_policy_impl.d.ts +59 -0
  769. package/dist/node-esm/src/core/auth/register.d.ts +23 -0
  770. package/dist/node-esm/src/core/credentials/auth_credential.d.ts +75 -0
  771. package/dist/node-esm/src/core/credentials/email.d.ts +60 -0
  772. package/dist/node-esm/src/core/credentials/index.d.ts +23 -0
  773. package/dist/node-esm/src/core/credentials/oauth.d.ts +81 -0
  774. package/dist/node-esm/src/core/credentials/phone.d.ts +52 -0
  775. package/dist/node-esm/src/core/credentials/saml.d.ts +52 -0
  776. package/dist/node-esm/src/core/errors.d.ts +328 -0
  777. package/dist/node-esm/src/core/index.d.ts +230 -0
  778. package/dist/node-esm/src/core/persistence/in_memory.d.ts +35 -0
  779. package/dist/node-esm/src/core/persistence/index.d.ts +42 -0
  780. package/dist/node-esm/src/core/persistence/persistence_user_manager.d.ts +45 -0
  781. package/dist/node-esm/src/core/providers/email.d.ts +83 -0
  782. package/dist/node-esm/src/core/providers/facebook.d.ts +93 -0
  783. package/dist/node-esm/src/core/providers/federated.d.ts +64 -0
  784. package/dist/node-esm/src/core/providers/github.d.ts +89 -0
  785. package/dist/node-esm/src/core/providers/google.d.ts +96 -0
  786. package/dist/node-esm/src/core/providers/oauth.d.ts +151 -0
  787. package/dist/node-esm/src/core/providers/saml.d.ts +62 -0
  788. package/dist/node-esm/src/core/providers/twitter.d.ts +103 -0
  789. package/dist/node-esm/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  790. package/dist/node-esm/src/core/strategies/action_code_settings.d.ts +19 -0
  791. package/dist/node-esm/src/core/strategies/anonymous.d.ts +32 -0
  792. package/dist/node-esm/src/core/strategies/credential.d.ts +64 -0
  793. package/dist/node-esm/src/core/strategies/custom_token.d.ts +37 -0
  794. package/dist/node-esm/src/core/strategies/email.d.ts +104 -0
  795. package/dist/node-esm/src/core/strategies/email_and_password.d.ts +139 -0
  796. package/dist/node-esm/src/core/strategies/email_link.d.ts +107 -0
  797. package/dist/node-esm/src/core/strategies/idp.d.ts +32 -0
  798. package/dist/node-esm/src/core/strategies/redirect.d.ts +36 -0
  799. package/dist/node-esm/src/core/user/account_info.d.ts +68 -0
  800. package/dist/node-esm/src/core/user/additional_user_info.d.ts +31 -0
  801. package/dist/node-esm/src/core/user/id_token_result.d.ts +48 -0
  802. package/dist/node-esm/src/core/user/invalidation.d.ts +18 -0
  803. package/dist/node-esm/src/core/user/link_unlink.d.ts +30 -0
  804. package/dist/node-esm/src/core/user/proactive_refresh.d.ts +34 -0
  805. package/dist/node-esm/src/core/user/reauthenticate.d.ts +20 -0
  806. package/dist/node-esm/src/core/user/reload.d.ts +29 -0
  807. package/dist/node-esm/src/core/user/token_manager.d.ts +50 -0
  808. package/dist/node-esm/src/core/user/user_credential_impl.d.ts +37 -0
  809. package/dist/node-esm/src/core/user/user_impl.d.ts +74 -0
  810. package/dist/node-esm/src/core/user/user_metadata.d.ts +27 -0
  811. package/dist/node-esm/src/core/util/assert.d.ts +94 -0
  812. package/dist/node-esm/src/core/util/browser.d.ts +50 -0
  813. package/dist/node-esm/src/core/util/delay.d.ts +31 -0
  814. package/dist/node-esm/src/core/util/emulator.d.ts +18 -0
  815. package/dist/node-esm/src/core/util/event_id.d.ts +17 -0
  816. package/dist/node-esm/src/core/util/fetch_provider.d.ts +25 -0
  817. package/dist/node-esm/src/core/util/handler.d.ts +20 -0
  818. package/dist/node-esm/src/core/util/instantiator.d.ts +28 -0
  819. package/dist/node-esm/src/core/util/location.d.ts +19 -0
  820. package/dist/node-esm/src/core/util/log.d.ts +23 -0
  821. package/dist/node-esm/src/core/util/navigator.d.ts +21 -0
  822. package/dist/node-esm/src/core/util/providers.d.ts +23 -0
  823. package/dist/node-esm/src/core/util/resolver.d.ts +25 -0
  824. package/dist/node-esm/src/core/util/time.d.ts +17 -0
  825. package/dist/node-esm/src/core/util/validate_origin.d.ts +18 -0
  826. package/dist/node-esm/src/core/util/version.d.ts +31 -0
  827. package/dist/node-esm/src/index.d.ts +18 -0
  828. package/dist/node-esm/src/mfa/assertions/totp.d.ts +124 -0
  829. package/dist/node-esm/src/mfa/index.d.ts +18 -0
  830. package/dist/node-esm/src/mfa/mfa_assertion.d.ts +27 -0
  831. package/dist/node-esm/src/mfa/mfa_error.d.ts +35 -0
  832. package/dist/node-esm/src/mfa/mfa_info.d.ts +36 -0
  833. package/dist/node-esm/src/mfa/mfa_resolver.d.ts +41 -0
  834. package/dist/node-esm/src/mfa/mfa_session.d.ts +39 -0
  835. package/dist/node-esm/src/mfa/mfa_user.d.ts +38 -0
  836. package/dist/node-esm/src/model/application_verifier.d.ts +23 -0
  837. package/dist/node-esm/src/model/auth.d.ts +90 -0
  838. package/dist/node-esm/src/model/enum_maps.d.ts +98 -0
  839. package/dist/node-esm/src/model/enums.d.ts +74 -0
  840. package/dist/node-esm/src/model/id_token.d.ts +87 -0
  841. package/dist/node-esm/src/model/password_policy.d.ts +111 -0
  842. package/dist/node-esm/src/model/popup_redirect.d.ts +94 -0
  843. package/dist/node-esm/src/model/public_types.d.ts +1291 -0
  844. package/dist/node-esm/src/model/user.d.ts +83 -0
  845. package/dist/node-esm/src/platform_browser/auth_window.d.ts +37 -0
  846. package/dist/node-esm/src/platform_browser/iframe/gapi.d.ts +19 -0
  847. package/dist/node-esm/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  848. package/dist/node-esm/src/platform_browser/iframe/iframe.d.ts +18 -0
  849. package/dist/node-esm/src/platform_browser/index.d.ts +27 -0
  850. package/dist/node-esm/src/platform_browser/load_js.d.ts +29 -0
  851. package/dist/node-esm/src/platform_browser/messagechannel/index.d.ts +87 -0
  852. package/dist/node-esm/src/platform_browser/messagechannel/promise.d.ts +33 -0
  853. package/dist/node-esm/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  854. package/dist/node-esm/src/platform_browser/messagechannel/sender.d.ts +46 -0
  855. package/dist/node-esm/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  856. package/dist/node-esm/src/platform_browser/persistence/browser.d.ts +27 -0
  857. package/dist/node-esm/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  858. package/dist/node-esm/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  859. package/dist/node-esm/src/platform_browser/persistence/local_storage.d.ts +25 -0
  860. package/dist/node-esm/src/platform_browser/persistence/session_storage.d.ts +24 -0
  861. package/dist/node-esm/src/platform_browser/popup_redirect.d.ts +27 -0
  862. package/dist/node-esm/src/platform_browser/providers/phone.d.ts +154 -0
  863. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  864. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  865. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  866. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  867. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  868. package/dist/node-esm/src/platform_browser/strategies/phone.d.ts +116 -0
  869. package/dist/node-esm/src/platform_browser/strategies/popup.d.ts +109 -0
  870. package/dist/node-esm/src/platform_browser/strategies/redirect.d.ts +176 -0
  871. package/dist/node-esm/src/platform_browser/util/popup.d.ts +24 -0
  872. package/dist/node-esm/src/platform_browser/util/worker.d.ts +20 -0
  873. package/dist/node-esm/src/platform_cordova/plugins.d.ts +42 -0
  874. package/dist/node-esm/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  875. package/dist/node-esm/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  876. package/dist/node-esm/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  877. package/dist/node-esm/src/platform_cordova/strategies/redirect.d.ts +20 -0
  878. package/dist/node-esm/src/platform_node/index.d.ts +51 -0
  879. package/dist/node-esm/src/platform_react_native/persistence/react_native.d.ts +25 -0
  880. package/dist/node-esm/test/helpers/api/helper.d.ts +22 -0
  881. package/dist/node-esm/test/helpers/delay.d.ts +20 -0
  882. package/dist/node-esm/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  883. package/dist/node-esm/test/helpers/fake_service_worker.d.ts +22 -0
  884. package/dist/node-esm/test/helpers/id_token_response.d.ts +18 -0
  885. package/dist/node-esm/test/helpers/iframe_event.d.ts +19 -0
  886. package/dist/node-esm/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  887. package/dist/node-esm/test/helpers/integration/helpers.d.ts +32 -0
  888. package/dist/node-esm/test/helpers/integration/settings.d.ts +23 -0
  889. package/dist/node-esm/test/helpers/jwt.d.ts +17 -0
  890. package/dist/node-esm/test/helpers/mock_auth.d.ts +47 -0
  891. package/dist/node-esm/test/helpers/mock_auth_credential.d.ts +31 -0
  892. package/dist/node-esm/test/helpers/mock_fetch.d.ts +31 -0
  893. package/dist/node-esm/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  894. package/dist/node-esm/test/helpers/redirect_persistence.d.ts +24 -0
  895. package/dist/node-esm/test/helpers/timeout_stub.d.ts +34 -0
  896. package/dist/node-esm/test/integration/flows/middleware_test_generator.d.ts +18 -0
  897. package/dist/node-esm/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  898. package/dist/node-esm/test/integration/webdriver/util/functions.d.ts +81 -0
  899. package/dist/node-esm/test/integration/webdriver/util/idp_page.d.ts +31 -0
  900. package/dist/node-esm/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  901. package/dist/node-esm/test/integration/webdriver/util/test_runner.d.ts +19 -0
  902. package/dist/node-esm/test/integration/webdriver/util/test_server.d.ts +27 -0
  903. package/dist/node-esm/test/integration/webdriver/util/ui_page.d.ts +33 -0
  904. package/dist/node-esm/totp-413dc172.js +7581 -0
  905. package/dist/node-esm/totp-413dc172.js.map +1 -0
  906. package/dist/rn/index-6b98721f.js +8678 -0
  907. package/dist/rn/index-6b98721f.js.map +1 -0
  908. package/dist/rn/index.cordova.d.ts +32 -0
  909. package/dist/rn/index.d.ts +38 -0
  910. package/dist/rn/index.doc.d.ts +24 -0
  911. package/dist/rn/index.js +209 -0
  912. package/dist/rn/index.js.map +1 -0
  913. package/dist/rn/index.node.d.ts +17 -0
  914. package/dist/rn/index.rn.d.ts +40 -0
  915. package/dist/rn/index.shared.d.ts +19 -0
  916. package/dist/rn/index.web-extension.d.ts +31 -0
  917. package/dist/rn/index.webworker.d.ts +21 -0
  918. package/dist/rn/internal/index.d.ts +42 -0
  919. package/dist/rn/internal.js +3266 -0
  920. package/dist/rn/internal.js.map +1 -0
  921. package/dist/rn/scripts/run_node_tests.d.ts +17 -0
  922. package/dist/rn/src/api/account_management/account.d.ts +59 -0
  923. package/dist/rn/src/api/account_management/email_and_password.d.ts +49 -0
  924. package/dist/rn/src/api/account_management/mfa.d.ts +107 -0
  925. package/dist/rn/src/api/account_management/profile.d.ts +29 -0
  926. package/dist/rn/src/api/authentication/create_auth_uri.d.ts +26 -0
  927. package/dist/rn/src/api/authentication/custom_token.d.ts +26 -0
  928. package/dist/rn/src/api/authentication/email_and_password.d.ts +86 -0
  929. package/dist/rn/src/api/authentication/email_link.d.ts +32 -0
  930. package/dist/rn/src/api/authentication/idp.d.ts +40 -0
  931. package/dist/rn/src/api/authentication/mfa.d.ts +73 -0
  932. package/dist/rn/src/api/authentication/recaptcha.d.ts +34 -0
  933. package/dist/rn/src/api/authentication/sign_up.d.ts +34 -0
  934. package/dist/rn/src/api/authentication/sms.d.ts +54 -0
  935. package/dist/rn/src/api/authentication/token.d.ts +37 -0
  936. package/dist/rn/src/api/errors.d.ts +129 -0
  937. package/dist/rn/src/api/index.d.ts +101 -0
  938. package/dist/rn/src/api/password_policy/get_password_policy.d.ts +48 -0
  939. package/dist/rn/src/api/project_config/get_project_config.d.ts +25 -0
  940. package/dist/rn/src/core/action_code_url.d.ts +73 -0
  941. package/dist/rn/src/core/auth/auth_event_manager.d.ts +34 -0
  942. package/dist/rn/src/core/auth/auth_impl.d.ts +133 -0
  943. package/dist/rn/src/core/auth/emulator.d.ts +42 -0
  944. package/dist/rn/src/core/auth/firebase_internal.d.ts +35 -0
  945. package/dist/rn/src/core/auth/initialize.d.ts +46 -0
  946. package/dist/rn/src/core/auth/middleware.d.ts +25 -0
  947. package/dist/rn/src/core/auth/password_policy_impl.d.ts +59 -0
  948. package/dist/rn/src/core/auth/register.d.ts +23 -0
  949. package/dist/rn/src/core/credentials/auth_credential.d.ts +75 -0
  950. package/dist/rn/src/core/credentials/email.d.ts +60 -0
  951. package/dist/rn/src/core/credentials/index.d.ts +23 -0
  952. package/dist/rn/src/core/credentials/oauth.d.ts +81 -0
  953. package/dist/rn/src/core/credentials/phone.d.ts +52 -0
  954. package/dist/rn/src/core/credentials/saml.d.ts +52 -0
  955. package/dist/rn/src/core/errors.d.ts +328 -0
  956. package/dist/rn/src/core/index.d.ts +230 -0
  957. package/dist/rn/src/core/persistence/in_memory.d.ts +35 -0
  958. package/dist/rn/src/core/persistence/index.d.ts +42 -0
  959. package/dist/rn/src/core/persistence/persistence_user_manager.d.ts +45 -0
  960. package/dist/rn/src/core/providers/email.d.ts +83 -0
  961. package/dist/rn/src/core/providers/facebook.d.ts +93 -0
  962. package/dist/rn/src/core/providers/federated.d.ts +64 -0
  963. package/dist/rn/src/core/providers/github.d.ts +89 -0
  964. package/dist/rn/src/core/providers/google.d.ts +96 -0
  965. package/dist/rn/src/core/providers/oauth.d.ts +151 -0
  966. package/dist/rn/src/core/providers/saml.d.ts +62 -0
  967. package/dist/rn/src/core/providers/twitter.d.ts +103 -0
  968. package/dist/rn/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  969. package/dist/rn/src/core/strategies/action_code_settings.d.ts +19 -0
  970. package/dist/rn/src/core/strategies/anonymous.d.ts +32 -0
  971. package/dist/rn/src/core/strategies/credential.d.ts +64 -0
  972. package/dist/rn/src/core/strategies/custom_token.d.ts +37 -0
  973. package/dist/rn/src/core/strategies/email.d.ts +104 -0
  974. package/dist/rn/src/core/strategies/email_and_password.d.ts +139 -0
  975. package/dist/rn/src/core/strategies/email_link.d.ts +107 -0
  976. package/dist/rn/src/core/strategies/idp.d.ts +32 -0
  977. package/dist/rn/src/core/strategies/redirect.d.ts +36 -0
  978. package/dist/rn/src/core/user/account_info.d.ts +68 -0
  979. package/dist/rn/src/core/user/additional_user_info.d.ts +31 -0
  980. package/dist/rn/src/core/user/id_token_result.d.ts +48 -0
  981. package/dist/rn/src/core/user/invalidation.d.ts +18 -0
  982. package/dist/rn/src/core/user/link_unlink.d.ts +30 -0
  983. package/dist/rn/src/core/user/proactive_refresh.d.ts +34 -0
  984. package/dist/rn/src/core/user/reauthenticate.d.ts +20 -0
  985. package/dist/rn/src/core/user/reload.d.ts +29 -0
  986. package/dist/rn/src/core/user/token_manager.d.ts +50 -0
  987. package/dist/rn/src/core/user/user_credential_impl.d.ts +37 -0
  988. package/dist/rn/src/core/user/user_impl.d.ts +74 -0
  989. package/dist/rn/src/core/user/user_metadata.d.ts +27 -0
  990. package/dist/rn/src/core/util/assert.d.ts +94 -0
  991. package/dist/rn/src/core/util/browser.d.ts +50 -0
  992. package/dist/rn/src/core/util/delay.d.ts +31 -0
  993. package/dist/rn/src/core/util/emulator.d.ts +18 -0
  994. package/dist/rn/src/core/util/event_id.d.ts +17 -0
  995. package/dist/rn/src/core/util/fetch_provider.d.ts +25 -0
  996. package/dist/rn/src/core/util/handler.d.ts +20 -0
  997. package/dist/rn/src/core/util/instantiator.d.ts +28 -0
  998. package/dist/rn/src/core/util/location.d.ts +19 -0
  999. package/dist/rn/src/core/util/log.d.ts +23 -0
  1000. package/dist/rn/src/core/util/navigator.d.ts +21 -0
  1001. package/dist/rn/src/core/util/providers.d.ts +23 -0
  1002. package/dist/rn/src/core/util/resolver.d.ts +25 -0
  1003. package/dist/rn/src/core/util/time.d.ts +17 -0
  1004. package/dist/rn/src/core/util/validate_origin.d.ts +18 -0
  1005. package/dist/rn/src/core/util/version.d.ts +31 -0
  1006. package/dist/rn/src/index.d.ts +18 -0
  1007. package/dist/rn/src/mfa/assertions/totp.d.ts +124 -0
  1008. package/dist/rn/src/mfa/index.d.ts +18 -0
  1009. package/dist/rn/src/mfa/mfa_assertion.d.ts +27 -0
  1010. package/dist/rn/src/mfa/mfa_error.d.ts +35 -0
  1011. package/dist/rn/src/mfa/mfa_info.d.ts +36 -0
  1012. package/dist/rn/src/mfa/mfa_resolver.d.ts +41 -0
  1013. package/dist/rn/src/mfa/mfa_session.d.ts +39 -0
  1014. package/dist/rn/src/mfa/mfa_user.d.ts +38 -0
  1015. package/dist/rn/src/model/application_verifier.d.ts +23 -0
  1016. package/dist/rn/src/model/auth.d.ts +90 -0
  1017. package/dist/rn/src/model/enum_maps.d.ts +98 -0
  1018. package/dist/rn/src/model/enums.d.ts +74 -0
  1019. package/dist/rn/src/model/id_token.d.ts +87 -0
  1020. package/dist/rn/src/model/password_policy.d.ts +111 -0
  1021. package/dist/rn/src/model/popup_redirect.d.ts +94 -0
  1022. package/dist/rn/src/model/public_types.d.ts +1291 -0
  1023. package/dist/rn/src/model/user.d.ts +83 -0
  1024. package/dist/rn/src/platform_browser/auth_window.d.ts +37 -0
  1025. package/dist/rn/src/platform_browser/iframe/gapi.d.ts +19 -0
  1026. package/dist/rn/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  1027. package/dist/rn/src/platform_browser/iframe/iframe.d.ts +18 -0
  1028. package/dist/rn/src/platform_browser/index.d.ts +27 -0
  1029. package/dist/rn/src/platform_browser/load_js.d.ts +29 -0
  1030. package/dist/rn/src/platform_browser/messagechannel/index.d.ts +87 -0
  1031. package/dist/rn/src/platform_browser/messagechannel/promise.d.ts +33 -0
  1032. package/dist/rn/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  1033. package/dist/rn/src/platform_browser/messagechannel/sender.d.ts +46 -0
  1034. package/dist/rn/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  1035. package/dist/rn/src/platform_browser/persistence/browser.d.ts +27 -0
  1036. package/dist/rn/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  1037. package/dist/rn/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  1038. package/dist/rn/src/platform_browser/persistence/local_storage.d.ts +25 -0
  1039. package/dist/rn/src/platform_browser/persistence/session_storage.d.ts +24 -0
  1040. package/dist/rn/src/platform_browser/popup_redirect.d.ts +27 -0
  1041. package/dist/rn/src/platform_browser/providers/phone.d.ts +154 -0
  1042. package/dist/rn/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  1043. package/dist/rn/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  1044. package/dist/rn/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  1045. package/dist/rn/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  1046. package/dist/rn/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  1047. package/dist/rn/src/platform_browser/strategies/phone.d.ts +116 -0
  1048. package/dist/rn/src/platform_browser/strategies/popup.d.ts +109 -0
  1049. package/dist/rn/src/platform_browser/strategies/redirect.d.ts +176 -0
  1050. package/dist/rn/src/platform_browser/util/popup.d.ts +24 -0
  1051. package/dist/rn/src/platform_browser/util/worker.d.ts +20 -0
  1052. package/dist/rn/src/platform_cordova/plugins.d.ts +42 -0
  1053. package/dist/rn/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  1054. package/dist/rn/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  1055. package/dist/rn/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  1056. package/dist/rn/src/platform_cordova/strategies/redirect.d.ts +20 -0
  1057. package/dist/rn/src/platform_node/index.d.ts +51 -0
  1058. package/dist/rn/src/platform_react_native/persistence/react_native.d.ts +25 -0
  1059. package/dist/rn/test/helpers/api/helper.d.ts +22 -0
  1060. package/dist/rn/test/helpers/delay.d.ts +20 -0
  1061. package/dist/rn/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  1062. package/dist/rn/test/helpers/fake_service_worker.d.ts +22 -0
  1063. package/dist/rn/test/helpers/id_token_response.d.ts +18 -0
  1064. package/dist/rn/test/helpers/iframe_event.d.ts +19 -0
  1065. package/dist/rn/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  1066. package/dist/rn/test/helpers/integration/helpers.d.ts +32 -0
  1067. package/dist/rn/test/helpers/integration/settings.d.ts +23 -0
  1068. package/dist/rn/test/helpers/jwt.d.ts +17 -0
  1069. package/dist/rn/test/helpers/mock_auth.d.ts +47 -0
  1070. package/dist/rn/test/helpers/mock_auth_credential.d.ts +31 -0
  1071. package/dist/rn/test/helpers/mock_fetch.d.ts +31 -0
  1072. package/dist/rn/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  1073. package/dist/rn/test/helpers/redirect_persistence.d.ts +24 -0
  1074. package/dist/rn/test/helpers/timeout_stub.d.ts +34 -0
  1075. package/dist/rn/test/integration/flows/middleware_test_generator.d.ts +18 -0
  1076. package/dist/rn/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  1077. package/dist/rn/test/integration/webdriver/util/functions.d.ts +81 -0
  1078. package/dist/rn/test/integration/webdriver/util/idp_page.d.ts +31 -0
  1079. package/dist/rn/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  1080. package/dist/rn/test/integration/webdriver/util/test_runner.d.ts +19 -0
  1081. package/dist/rn/test/integration/webdriver/util/test_server.d.ts +27 -0
  1082. package/dist/rn/test/integration/webdriver/util/ui_page.d.ts +33 -0
  1083. package/dist/scripts/run_node_tests.d.ts +17 -0
  1084. package/dist/src/api/account_management/account.d.ts +59 -0
  1085. package/dist/src/api/account_management/email_and_password.d.ts +49 -0
  1086. package/dist/src/api/account_management/mfa.d.ts +107 -0
  1087. package/dist/src/api/account_management/profile.d.ts +29 -0
  1088. package/dist/src/api/authentication/create_auth_uri.d.ts +26 -0
  1089. package/dist/src/api/authentication/custom_token.d.ts +26 -0
  1090. package/dist/src/api/authentication/email_and_password.d.ts +86 -0
  1091. package/dist/src/api/authentication/email_link.d.ts +32 -0
  1092. package/dist/src/api/authentication/idp.d.ts +40 -0
  1093. package/dist/src/api/authentication/mfa.d.ts +73 -0
  1094. package/dist/src/api/authentication/recaptcha.d.ts +34 -0
  1095. package/dist/src/api/authentication/sign_up.d.ts +34 -0
  1096. package/dist/src/api/authentication/sms.d.ts +54 -0
  1097. package/dist/src/api/authentication/token.d.ts +37 -0
  1098. package/dist/src/api/errors.d.ts +129 -0
  1099. package/dist/src/api/index.d.ts +101 -0
  1100. package/dist/src/api/password_policy/get_password_policy.d.ts +48 -0
  1101. package/dist/src/api/project_config/get_project_config.d.ts +25 -0
  1102. package/dist/src/core/action_code_url.d.ts +73 -0
  1103. package/dist/src/core/auth/auth_event_manager.d.ts +34 -0
  1104. package/dist/src/core/auth/auth_impl.d.ts +133 -0
  1105. package/dist/src/core/auth/emulator.d.ts +42 -0
  1106. package/dist/src/core/auth/firebase_internal.d.ts +35 -0
  1107. package/dist/src/core/auth/initialize.d.ts +46 -0
  1108. package/dist/src/core/auth/middleware.d.ts +25 -0
  1109. package/dist/src/core/auth/password_policy_impl.d.ts +59 -0
  1110. package/dist/src/core/auth/register.d.ts +23 -0
  1111. package/dist/src/core/credentials/auth_credential.d.ts +75 -0
  1112. package/dist/src/core/credentials/email.d.ts +60 -0
  1113. package/dist/src/core/credentials/index.d.ts +23 -0
  1114. package/dist/src/core/credentials/oauth.d.ts +81 -0
  1115. package/dist/src/core/credentials/phone.d.ts +52 -0
  1116. package/dist/src/core/credentials/saml.d.ts +52 -0
  1117. package/dist/src/core/errors.d.ts +328 -0
  1118. package/dist/src/core/index.d.ts +230 -0
  1119. package/dist/src/core/persistence/in_memory.d.ts +35 -0
  1120. package/dist/src/core/persistence/index.d.ts +42 -0
  1121. package/dist/src/core/persistence/persistence_user_manager.d.ts +45 -0
  1122. package/dist/src/core/providers/email.d.ts +83 -0
  1123. package/dist/src/core/providers/facebook.d.ts +93 -0
  1124. package/dist/src/core/providers/federated.d.ts +64 -0
  1125. package/dist/src/core/providers/github.d.ts +89 -0
  1126. package/dist/src/core/providers/google.d.ts +96 -0
  1127. package/dist/src/core/providers/oauth.d.ts +151 -0
  1128. package/dist/src/core/providers/saml.d.ts +62 -0
  1129. package/dist/src/core/providers/twitter.d.ts +103 -0
  1130. package/dist/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  1131. package/dist/src/core/strategies/action_code_settings.d.ts +19 -0
  1132. package/dist/src/core/strategies/anonymous.d.ts +32 -0
  1133. package/dist/src/core/strategies/credential.d.ts +64 -0
  1134. package/dist/src/core/strategies/custom_token.d.ts +37 -0
  1135. package/dist/src/core/strategies/email.d.ts +104 -0
  1136. package/dist/src/core/strategies/email_and_password.d.ts +139 -0
  1137. package/dist/src/core/strategies/email_link.d.ts +107 -0
  1138. package/dist/src/core/strategies/idp.d.ts +32 -0
  1139. package/dist/src/core/strategies/redirect.d.ts +36 -0
  1140. package/dist/src/core/user/account_info.d.ts +68 -0
  1141. package/dist/src/core/user/additional_user_info.d.ts +31 -0
  1142. package/dist/src/core/user/id_token_result.d.ts +48 -0
  1143. package/dist/src/core/user/invalidation.d.ts +18 -0
  1144. package/dist/src/core/user/link_unlink.d.ts +30 -0
  1145. package/dist/src/core/user/proactive_refresh.d.ts +34 -0
  1146. package/dist/src/core/user/reauthenticate.d.ts +20 -0
  1147. package/dist/src/core/user/reload.d.ts +29 -0
  1148. package/dist/src/core/user/token_manager.d.ts +50 -0
  1149. package/dist/src/core/user/user_credential_impl.d.ts +37 -0
  1150. package/dist/src/core/user/user_impl.d.ts +74 -0
  1151. package/dist/src/core/user/user_metadata.d.ts +27 -0
  1152. package/dist/src/core/util/assert.d.ts +94 -0
  1153. package/dist/src/core/util/browser.d.ts +50 -0
  1154. package/dist/src/core/util/delay.d.ts +31 -0
  1155. package/dist/src/core/util/emulator.d.ts +18 -0
  1156. package/dist/src/core/util/event_id.d.ts +17 -0
  1157. package/dist/src/core/util/fetch_provider.d.ts +25 -0
  1158. package/dist/src/core/util/handler.d.ts +20 -0
  1159. package/dist/src/core/util/instantiator.d.ts +28 -0
  1160. package/dist/src/core/util/location.d.ts +19 -0
  1161. package/dist/src/core/util/log.d.ts +23 -0
  1162. package/dist/src/core/util/navigator.d.ts +21 -0
  1163. package/dist/src/core/util/providers.d.ts +23 -0
  1164. package/dist/src/core/util/resolver.d.ts +25 -0
  1165. package/dist/src/core/util/time.d.ts +17 -0
  1166. package/dist/src/core/util/validate_origin.d.ts +18 -0
  1167. package/dist/src/core/util/version.d.ts +31 -0
  1168. package/dist/src/index.d.ts +18 -0
  1169. package/dist/src/mfa/assertions/totp.d.ts +124 -0
  1170. package/dist/src/mfa/index.d.ts +18 -0
  1171. package/dist/src/mfa/mfa_assertion.d.ts +27 -0
  1172. package/dist/src/mfa/mfa_error.d.ts +35 -0
  1173. package/dist/src/mfa/mfa_info.d.ts +36 -0
  1174. package/dist/src/mfa/mfa_resolver.d.ts +41 -0
  1175. package/dist/src/mfa/mfa_session.d.ts +39 -0
  1176. package/dist/src/mfa/mfa_user.d.ts +38 -0
  1177. package/dist/src/model/application_verifier.d.ts +23 -0
  1178. package/dist/src/model/auth.d.ts +90 -0
  1179. package/dist/src/model/enum_maps.d.ts +98 -0
  1180. package/dist/src/model/enums.d.ts +74 -0
  1181. package/dist/src/model/id_token.d.ts +87 -0
  1182. package/dist/src/model/password_policy.d.ts +111 -0
  1183. package/dist/src/model/popup_redirect.d.ts +94 -0
  1184. package/dist/src/model/public_types.d.ts +1291 -0
  1185. package/dist/src/model/user.d.ts +83 -0
  1186. package/dist/src/platform_browser/auth_window.d.ts +37 -0
  1187. package/dist/src/platform_browser/iframe/gapi.d.ts +19 -0
  1188. package/dist/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  1189. package/dist/src/platform_browser/iframe/iframe.d.ts +18 -0
  1190. package/dist/src/platform_browser/index.d.ts +27 -0
  1191. package/dist/src/platform_browser/load_js.d.ts +29 -0
  1192. package/dist/src/platform_browser/messagechannel/index.d.ts +87 -0
  1193. package/dist/src/platform_browser/messagechannel/promise.d.ts +33 -0
  1194. package/dist/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  1195. package/dist/src/platform_browser/messagechannel/sender.d.ts +46 -0
  1196. package/dist/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  1197. package/dist/src/platform_browser/persistence/browser.d.ts +27 -0
  1198. package/dist/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  1199. package/dist/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  1200. package/dist/src/platform_browser/persistence/local_storage.d.ts +25 -0
  1201. package/dist/src/platform_browser/persistence/session_storage.d.ts +24 -0
  1202. package/dist/src/platform_browser/popup_redirect.d.ts +27 -0
  1203. package/dist/src/platform_browser/providers/phone.d.ts +154 -0
  1204. package/dist/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  1205. package/dist/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  1206. package/dist/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  1207. package/dist/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  1208. package/dist/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  1209. package/dist/src/platform_browser/strategies/phone.d.ts +116 -0
  1210. package/dist/src/platform_browser/strategies/popup.d.ts +109 -0
  1211. package/dist/src/platform_browser/strategies/redirect.d.ts +176 -0
  1212. package/dist/src/platform_browser/util/popup.d.ts +24 -0
  1213. package/dist/src/platform_browser/util/worker.d.ts +20 -0
  1214. package/dist/src/platform_cordova/plugins.d.ts +42 -0
  1215. package/dist/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  1216. package/dist/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  1217. package/dist/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  1218. package/dist/src/platform_cordova/strategies/redirect.d.ts +20 -0
  1219. package/dist/src/platform_node/index.d.ts +51 -0
  1220. package/dist/src/platform_react_native/persistence/react_native.d.ts +25 -0
  1221. package/dist/test/helpers/api/helper.d.ts +22 -0
  1222. package/dist/test/helpers/delay.d.ts +20 -0
  1223. package/dist/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  1224. package/dist/test/helpers/fake_service_worker.d.ts +22 -0
  1225. package/dist/test/helpers/id_token_response.d.ts +18 -0
  1226. package/dist/test/helpers/iframe_event.d.ts +19 -0
  1227. package/dist/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  1228. package/dist/test/helpers/integration/helpers.d.ts +32 -0
  1229. package/dist/test/helpers/integration/settings.d.ts +23 -0
  1230. package/dist/test/helpers/jwt.d.ts +17 -0
  1231. package/dist/test/helpers/mock_auth.d.ts +47 -0
  1232. package/dist/test/helpers/mock_auth_credential.d.ts +31 -0
  1233. package/dist/test/helpers/mock_fetch.d.ts +31 -0
  1234. package/dist/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  1235. package/dist/test/helpers/redirect_persistence.d.ts +24 -0
  1236. package/dist/test/helpers/timeout_stub.d.ts +34 -0
  1237. package/dist/test/integration/flows/middleware_test_generator.d.ts +18 -0
  1238. package/dist/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  1239. package/dist/test/integration/webdriver/util/functions.d.ts +81 -0
  1240. package/dist/test/integration/webdriver/util/idp_page.d.ts +31 -0
  1241. package/dist/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  1242. package/dist/test/integration/webdriver/util/test_runner.d.ts +19 -0
  1243. package/dist/test/integration/webdriver/util/test_server.d.ts +27 -0
  1244. package/dist/test/integration/webdriver/util/ui_page.d.ts +33 -0
  1245. package/dist/tsdoc-metadata.json +11 -0
  1246. package/dist/web-extension-cjs/index.cordova.d.ts +32 -0
  1247. package/dist/web-extension-cjs/index.d.ts +38 -0
  1248. package/dist/web-extension-cjs/index.doc.d.ts +24 -0
  1249. package/dist/web-extension-cjs/index.js +113 -0
  1250. package/dist/web-extension-cjs/index.js.map +1 -0
  1251. package/dist/web-extension-cjs/index.node.d.ts +17 -0
  1252. package/dist/web-extension-cjs/index.rn.d.ts +40 -0
  1253. package/dist/web-extension-cjs/index.shared.d.ts +19 -0
  1254. package/dist/web-extension-cjs/index.web-extension.d.ts +31 -0
  1255. package/dist/web-extension-cjs/index.webworker.d.ts +21 -0
  1256. package/dist/web-extension-cjs/internal/index.d.ts +42 -0
  1257. package/dist/web-extension-cjs/internal.js +3569 -0
  1258. package/dist/web-extension-cjs/internal.js.map +1 -0
  1259. package/dist/web-extension-cjs/register-e72afd7b.js +8375 -0
  1260. package/dist/web-extension-cjs/register-e72afd7b.js.map +1 -0
  1261. package/dist/web-extension-cjs/scripts/run_node_tests.d.ts +17 -0
  1262. package/dist/web-extension-cjs/src/api/account_management/account.d.ts +59 -0
  1263. package/dist/web-extension-cjs/src/api/account_management/email_and_password.d.ts +49 -0
  1264. package/dist/web-extension-cjs/src/api/account_management/mfa.d.ts +107 -0
  1265. package/dist/web-extension-cjs/src/api/account_management/profile.d.ts +29 -0
  1266. package/dist/web-extension-cjs/src/api/authentication/create_auth_uri.d.ts +26 -0
  1267. package/dist/web-extension-cjs/src/api/authentication/custom_token.d.ts +26 -0
  1268. package/dist/web-extension-cjs/src/api/authentication/email_and_password.d.ts +86 -0
  1269. package/dist/web-extension-cjs/src/api/authentication/email_link.d.ts +32 -0
  1270. package/dist/web-extension-cjs/src/api/authentication/idp.d.ts +40 -0
  1271. package/dist/web-extension-cjs/src/api/authentication/mfa.d.ts +73 -0
  1272. package/dist/web-extension-cjs/src/api/authentication/recaptcha.d.ts +34 -0
  1273. package/dist/web-extension-cjs/src/api/authentication/sign_up.d.ts +34 -0
  1274. package/dist/web-extension-cjs/src/api/authentication/sms.d.ts +54 -0
  1275. package/dist/web-extension-cjs/src/api/authentication/token.d.ts +37 -0
  1276. package/dist/web-extension-cjs/src/api/errors.d.ts +129 -0
  1277. package/dist/web-extension-cjs/src/api/index.d.ts +101 -0
  1278. package/dist/web-extension-cjs/src/api/password_policy/get_password_policy.d.ts +48 -0
  1279. package/dist/web-extension-cjs/src/api/project_config/get_project_config.d.ts +25 -0
  1280. package/dist/web-extension-cjs/src/core/action_code_url.d.ts +73 -0
  1281. package/dist/web-extension-cjs/src/core/auth/auth_event_manager.d.ts +34 -0
  1282. package/dist/web-extension-cjs/src/core/auth/auth_impl.d.ts +133 -0
  1283. package/dist/web-extension-cjs/src/core/auth/emulator.d.ts +42 -0
  1284. package/dist/web-extension-cjs/src/core/auth/firebase_internal.d.ts +35 -0
  1285. package/dist/web-extension-cjs/src/core/auth/initialize.d.ts +46 -0
  1286. package/dist/web-extension-cjs/src/core/auth/middleware.d.ts +25 -0
  1287. package/dist/web-extension-cjs/src/core/auth/password_policy_impl.d.ts +59 -0
  1288. package/dist/web-extension-cjs/src/core/auth/register.d.ts +23 -0
  1289. package/dist/web-extension-cjs/src/core/credentials/auth_credential.d.ts +75 -0
  1290. package/dist/web-extension-cjs/src/core/credentials/email.d.ts +60 -0
  1291. package/dist/web-extension-cjs/src/core/credentials/index.d.ts +23 -0
  1292. package/dist/web-extension-cjs/src/core/credentials/oauth.d.ts +81 -0
  1293. package/dist/web-extension-cjs/src/core/credentials/phone.d.ts +52 -0
  1294. package/dist/web-extension-cjs/src/core/credentials/saml.d.ts +52 -0
  1295. package/dist/web-extension-cjs/src/core/errors.d.ts +328 -0
  1296. package/dist/web-extension-cjs/src/core/index.d.ts +230 -0
  1297. package/dist/web-extension-cjs/src/core/persistence/in_memory.d.ts +35 -0
  1298. package/dist/web-extension-cjs/src/core/persistence/index.d.ts +42 -0
  1299. package/dist/web-extension-cjs/src/core/persistence/persistence_user_manager.d.ts +45 -0
  1300. package/dist/web-extension-cjs/src/core/providers/email.d.ts +83 -0
  1301. package/dist/web-extension-cjs/src/core/providers/facebook.d.ts +93 -0
  1302. package/dist/web-extension-cjs/src/core/providers/federated.d.ts +64 -0
  1303. package/dist/web-extension-cjs/src/core/providers/github.d.ts +89 -0
  1304. package/dist/web-extension-cjs/src/core/providers/google.d.ts +96 -0
  1305. package/dist/web-extension-cjs/src/core/providers/oauth.d.ts +151 -0
  1306. package/dist/web-extension-cjs/src/core/providers/saml.d.ts +62 -0
  1307. package/dist/web-extension-cjs/src/core/providers/twitter.d.ts +103 -0
  1308. package/dist/web-extension-cjs/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  1309. package/dist/web-extension-cjs/src/core/strategies/action_code_settings.d.ts +19 -0
  1310. package/dist/web-extension-cjs/src/core/strategies/anonymous.d.ts +32 -0
  1311. package/dist/web-extension-cjs/src/core/strategies/credential.d.ts +64 -0
  1312. package/dist/web-extension-cjs/src/core/strategies/custom_token.d.ts +37 -0
  1313. package/dist/web-extension-cjs/src/core/strategies/email.d.ts +104 -0
  1314. package/dist/web-extension-cjs/src/core/strategies/email_and_password.d.ts +139 -0
  1315. package/dist/web-extension-cjs/src/core/strategies/email_link.d.ts +107 -0
  1316. package/dist/web-extension-cjs/src/core/strategies/idp.d.ts +32 -0
  1317. package/dist/web-extension-cjs/src/core/strategies/redirect.d.ts +36 -0
  1318. package/dist/web-extension-cjs/src/core/user/account_info.d.ts +68 -0
  1319. package/dist/web-extension-cjs/src/core/user/additional_user_info.d.ts +31 -0
  1320. package/dist/web-extension-cjs/src/core/user/id_token_result.d.ts +48 -0
  1321. package/dist/web-extension-cjs/src/core/user/invalidation.d.ts +18 -0
  1322. package/dist/web-extension-cjs/src/core/user/link_unlink.d.ts +30 -0
  1323. package/dist/web-extension-cjs/src/core/user/proactive_refresh.d.ts +34 -0
  1324. package/dist/web-extension-cjs/src/core/user/reauthenticate.d.ts +20 -0
  1325. package/dist/web-extension-cjs/src/core/user/reload.d.ts +29 -0
  1326. package/dist/web-extension-cjs/src/core/user/token_manager.d.ts +50 -0
  1327. package/dist/web-extension-cjs/src/core/user/user_credential_impl.d.ts +37 -0
  1328. package/dist/web-extension-cjs/src/core/user/user_impl.d.ts +74 -0
  1329. package/dist/web-extension-cjs/src/core/user/user_metadata.d.ts +27 -0
  1330. package/dist/web-extension-cjs/src/core/util/assert.d.ts +94 -0
  1331. package/dist/web-extension-cjs/src/core/util/browser.d.ts +50 -0
  1332. package/dist/web-extension-cjs/src/core/util/delay.d.ts +31 -0
  1333. package/dist/web-extension-cjs/src/core/util/emulator.d.ts +18 -0
  1334. package/dist/web-extension-cjs/src/core/util/event_id.d.ts +17 -0
  1335. package/dist/web-extension-cjs/src/core/util/fetch_provider.d.ts +25 -0
  1336. package/dist/web-extension-cjs/src/core/util/handler.d.ts +20 -0
  1337. package/dist/web-extension-cjs/src/core/util/instantiator.d.ts +28 -0
  1338. package/dist/web-extension-cjs/src/core/util/location.d.ts +19 -0
  1339. package/dist/web-extension-cjs/src/core/util/log.d.ts +23 -0
  1340. package/dist/web-extension-cjs/src/core/util/navigator.d.ts +21 -0
  1341. package/dist/web-extension-cjs/src/core/util/providers.d.ts +23 -0
  1342. package/dist/web-extension-cjs/src/core/util/resolver.d.ts +25 -0
  1343. package/dist/web-extension-cjs/src/core/util/time.d.ts +17 -0
  1344. package/dist/web-extension-cjs/src/core/util/validate_origin.d.ts +18 -0
  1345. package/dist/web-extension-cjs/src/core/util/version.d.ts +31 -0
  1346. package/dist/web-extension-cjs/src/index.d.ts +18 -0
  1347. package/dist/web-extension-cjs/src/mfa/assertions/totp.d.ts +124 -0
  1348. package/dist/web-extension-cjs/src/mfa/index.d.ts +18 -0
  1349. package/dist/web-extension-cjs/src/mfa/mfa_assertion.d.ts +27 -0
  1350. package/dist/web-extension-cjs/src/mfa/mfa_error.d.ts +35 -0
  1351. package/dist/web-extension-cjs/src/mfa/mfa_info.d.ts +36 -0
  1352. package/dist/web-extension-cjs/src/mfa/mfa_resolver.d.ts +41 -0
  1353. package/dist/web-extension-cjs/src/mfa/mfa_session.d.ts +39 -0
  1354. package/dist/web-extension-cjs/src/mfa/mfa_user.d.ts +38 -0
  1355. package/dist/web-extension-cjs/src/model/application_verifier.d.ts +23 -0
  1356. package/dist/web-extension-cjs/src/model/auth.d.ts +90 -0
  1357. package/dist/web-extension-cjs/src/model/enum_maps.d.ts +98 -0
  1358. package/dist/web-extension-cjs/src/model/enums.d.ts +74 -0
  1359. package/dist/web-extension-cjs/src/model/id_token.d.ts +87 -0
  1360. package/dist/web-extension-cjs/src/model/password_policy.d.ts +111 -0
  1361. package/dist/web-extension-cjs/src/model/popup_redirect.d.ts +94 -0
  1362. package/dist/web-extension-cjs/src/model/public_types.d.ts +1291 -0
  1363. package/dist/web-extension-cjs/src/model/user.d.ts +83 -0
  1364. package/dist/web-extension-cjs/src/platform_browser/auth_window.d.ts +37 -0
  1365. package/dist/web-extension-cjs/src/platform_browser/iframe/gapi.d.ts +19 -0
  1366. package/dist/web-extension-cjs/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  1367. package/dist/web-extension-cjs/src/platform_browser/iframe/iframe.d.ts +18 -0
  1368. package/dist/web-extension-cjs/src/platform_browser/index.d.ts +27 -0
  1369. package/dist/web-extension-cjs/src/platform_browser/load_js.d.ts +29 -0
  1370. package/dist/web-extension-cjs/src/platform_browser/messagechannel/index.d.ts +87 -0
  1371. package/dist/web-extension-cjs/src/platform_browser/messagechannel/promise.d.ts +33 -0
  1372. package/dist/web-extension-cjs/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  1373. package/dist/web-extension-cjs/src/platform_browser/messagechannel/sender.d.ts +46 -0
  1374. package/dist/web-extension-cjs/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  1375. package/dist/web-extension-cjs/src/platform_browser/persistence/browser.d.ts +27 -0
  1376. package/dist/web-extension-cjs/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  1377. package/dist/web-extension-cjs/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  1378. package/dist/web-extension-cjs/src/platform_browser/persistence/local_storage.d.ts +25 -0
  1379. package/dist/web-extension-cjs/src/platform_browser/persistence/session_storage.d.ts +24 -0
  1380. package/dist/web-extension-cjs/src/platform_browser/popup_redirect.d.ts +27 -0
  1381. package/dist/web-extension-cjs/src/platform_browser/providers/phone.d.ts +154 -0
  1382. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  1383. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  1384. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  1385. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  1386. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  1387. package/dist/web-extension-cjs/src/platform_browser/strategies/phone.d.ts +116 -0
  1388. package/dist/web-extension-cjs/src/platform_browser/strategies/popup.d.ts +109 -0
  1389. package/dist/web-extension-cjs/src/platform_browser/strategies/redirect.d.ts +176 -0
  1390. package/dist/web-extension-cjs/src/platform_browser/util/popup.d.ts +24 -0
  1391. package/dist/web-extension-cjs/src/platform_browser/util/worker.d.ts +20 -0
  1392. package/dist/web-extension-cjs/src/platform_cordova/plugins.d.ts +42 -0
  1393. package/dist/web-extension-cjs/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  1394. package/dist/web-extension-cjs/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  1395. package/dist/web-extension-cjs/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  1396. package/dist/web-extension-cjs/src/platform_cordova/strategies/redirect.d.ts +20 -0
  1397. package/dist/web-extension-cjs/src/platform_node/index.d.ts +51 -0
  1398. package/dist/web-extension-cjs/src/platform_react_native/persistence/react_native.d.ts +25 -0
  1399. package/dist/web-extension-cjs/test/helpers/api/helper.d.ts +22 -0
  1400. package/dist/web-extension-cjs/test/helpers/delay.d.ts +20 -0
  1401. package/dist/web-extension-cjs/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  1402. package/dist/web-extension-cjs/test/helpers/fake_service_worker.d.ts +22 -0
  1403. package/dist/web-extension-cjs/test/helpers/id_token_response.d.ts +18 -0
  1404. package/dist/web-extension-cjs/test/helpers/iframe_event.d.ts +19 -0
  1405. package/dist/web-extension-cjs/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  1406. package/dist/web-extension-cjs/test/helpers/integration/helpers.d.ts +32 -0
  1407. package/dist/web-extension-cjs/test/helpers/integration/settings.d.ts +23 -0
  1408. package/dist/web-extension-cjs/test/helpers/jwt.d.ts +17 -0
  1409. package/dist/web-extension-cjs/test/helpers/mock_auth.d.ts +47 -0
  1410. package/dist/web-extension-cjs/test/helpers/mock_auth_credential.d.ts +31 -0
  1411. package/dist/web-extension-cjs/test/helpers/mock_fetch.d.ts +31 -0
  1412. package/dist/web-extension-cjs/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  1413. package/dist/web-extension-cjs/test/helpers/redirect_persistence.d.ts +24 -0
  1414. package/dist/web-extension-cjs/test/helpers/timeout_stub.d.ts +34 -0
  1415. package/dist/web-extension-cjs/test/integration/flows/middleware_test_generator.d.ts +18 -0
  1416. package/dist/web-extension-cjs/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  1417. package/dist/web-extension-cjs/test/integration/webdriver/util/functions.d.ts +81 -0
  1418. package/dist/web-extension-cjs/test/integration/webdriver/util/idp_page.d.ts +31 -0
  1419. package/dist/web-extension-cjs/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  1420. package/dist/web-extension-cjs/test/integration/webdriver/util/test_runner.d.ts +19 -0
  1421. package/dist/web-extension-cjs/test/integration/webdriver/util/test_server.d.ts +27 -0
  1422. package/dist/web-extension-cjs/test/integration/webdriver/util/ui_page.d.ts +33 -0
  1423. package/dist/web-extension-esm/auth-web-extension-public.d.ts +3210 -0
  1424. package/dist/web-extension-esm/auth-web-extension.d.ts +3763 -0
  1425. package/dist/web-extension-esm/index.cordova.d.ts +32 -0
  1426. package/dist/web-extension-esm/index.d.ts +38 -0
  1427. package/dist/web-extension-esm/index.doc.d.ts +24 -0
  1428. package/dist/web-extension-esm/index.js +49 -0
  1429. package/dist/web-extension-esm/index.js.map +1 -0
  1430. package/dist/web-extension-esm/index.node.d.ts +17 -0
  1431. package/dist/web-extension-esm/index.rn.d.ts +40 -0
  1432. package/dist/web-extension-esm/index.shared.d.ts +19 -0
  1433. package/dist/web-extension-esm/index.web-extension.d.ts +31 -0
  1434. package/dist/web-extension-esm/index.webworker.d.ts +21 -0
  1435. package/dist/web-extension-esm/internal/index.d.ts +42 -0
  1436. package/dist/web-extension-esm/internal.js +3466 -0
  1437. package/dist/web-extension-esm/internal.js.map +1 -0
  1438. package/dist/web-extension-esm/package.json +1 -0
  1439. package/dist/web-extension-esm/register-7238101c.js +8255 -0
  1440. package/dist/web-extension-esm/register-7238101c.js.map +1 -0
  1441. package/dist/web-extension-esm/scripts/run_node_tests.d.ts +17 -0
  1442. package/dist/web-extension-esm/src/api/account_management/account.d.ts +59 -0
  1443. package/dist/web-extension-esm/src/api/account_management/email_and_password.d.ts +49 -0
  1444. package/dist/web-extension-esm/src/api/account_management/mfa.d.ts +107 -0
  1445. package/dist/web-extension-esm/src/api/account_management/profile.d.ts +29 -0
  1446. package/dist/web-extension-esm/src/api/authentication/create_auth_uri.d.ts +26 -0
  1447. package/dist/web-extension-esm/src/api/authentication/custom_token.d.ts +26 -0
  1448. package/dist/web-extension-esm/src/api/authentication/email_and_password.d.ts +86 -0
  1449. package/dist/web-extension-esm/src/api/authentication/email_link.d.ts +32 -0
  1450. package/dist/web-extension-esm/src/api/authentication/idp.d.ts +40 -0
  1451. package/dist/web-extension-esm/src/api/authentication/mfa.d.ts +73 -0
  1452. package/dist/web-extension-esm/src/api/authentication/recaptcha.d.ts +34 -0
  1453. package/dist/web-extension-esm/src/api/authentication/sign_up.d.ts +34 -0
  1454. package/dist/web-extension-esm/src/api/authentication/sms.d.ts +54 -0
  1455. package/dist/web-extension-esm/src/api/authentication/token.d.ts +37 -0
  1456. package/dist/web-extension-esm/src/api/errors.d.ts +129 -0
  1457. package/dist/web-extension-esm/src/api/index.d.ts +101 -0
  1458. package/dist/web-extension-esm/src/api/password_policy/get_password_policy.d.ts +48 -0
  1459. package/dist/web-extension-esm/src/api/project_config/get_project_config.d.ts +25 -0
  1460. package/dist/web-extension-esm/src/core/action_code_url.d.ts +73 -0
  1461. package/dist/web-extension-esm/src/core/auth/auth_event_manager.d.ts +34 -0
  1462. package/dist/web-extension-esm/src/core/auth/auth_impl.d.ts +133 -0
  1463. package/dist/web-extension-esm/src/core/auth/emulator.d.ts +42 -0
  1464. package/dist/web-extension-esm/src/core/auth/firebase_internal.d.ts +35 -0
  1465. package/dist/web-extension-esm/src/core/auth/initialize.d.ts +46 -0
  1466. package/dist/web-extension-esm/src/core/auth/middleware.d.ts +25 -0
  1467. package/dist/web-extension-esm/src/core/auth/password_policy_impl.d.ts +59 -0
  1468. package/dist/web-extension-esm/src/core/auth/register.d.ts +23 -0
  1469. package/dist/web-extension-esm/src/core/credentials/auth_credential.d.ts +75 -0
  1470. package/dist/web-extension-esm/src/core/credentials/email.d.ts +60 -0
  1471. package/dist/web-extension-esm/src/core/credentials/index.d.ts +23 -0
  1472. package/dist/web-extension-esm/src/core/credentials/oauth.d.ts +81 -0
  1473. package/dist/web-extension-esm/src/core/credentials/phone.d.ts +52 -0
  1474. package/dist/web-extension-esm/src/core/credentials/saml.d.ts +52 -0
  1475. package/dist/web-extension-esm/src/core/errors.d.ts +328 -0
  1476. package/dist/web-extension-esm/src/core/index.d.ts +230 -0
  1477. package/dist/web-extension-esm/src/core/persistence/in_memory.d.ts +35 -0
  1478. package/dist/web-extension-esm/src/core/persistence/index.d.ts +42 -0
  1479. package/dist/web-extension-esm/src/core/persistence/persistence_user_manager.d.ts +45 -0
  1480. package/dist/web-extension-esm/src/core/providers/email.d.ts +83 -0
  1481. package/dist/web-extension-esm/src/core/providers/facebook.d.ts +93 -0
  1482. package/dist/web-extension-esm/src/core/providers/federated.d.ts +64 -0
  1483. package/dist/web-extension-esm/src/core/providers/github.d.ts +89 -0
  1484. package/dist/web-extension-esm/src/core/providers/google.d.ts +96 -0
  1485. package/dist/web-extension-esm/src/core/providers/oauth.d.ts +151 -0
  1486. package/dist/web-extension-esm/src/core/providers/saml.d.ts +62 -0
  1487. package/dist/web-extension-esm/src/core/providers/twitter.d.ts +103 -0
  1488. package/dist/web-extension-esm/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  1489. package/dist/web-extension-esm/src/core/strategies/action_code_settings.d.ts +19 -0
  1490. package/dist/web-extension-esm/src/core/strategies/anonymous.d.ts +32 -0
  1491. package/dist/web-extension-esm/src/core/strategies/credential.d.ts +64 -0
  1492. package/dist/web-extension-esm/src/core/strategies/custom_token.d.ts +37 -0
  1493. package/dist/web-extension-esm/src/core/strategies/email.d.ts +104 -0
  1494. package/dist/web-extension-esm/src/core/strategies/email_and_password.d.ts +139 -0
  1495. package/dist/web-extension-esm/src/core/strategies/email_link.d.ts +107 -0
  1496. package/dist/web-extension-esm/src/core/strategies/idp.d.ts +32 -0
  1497. package/dist/web-extension-esm/src/core/strategies/redirect.d.ts +36 -0
  1498. package/dist/web-extension-esm/src/core/user/account_info.d.ts +68 -0
  1499. package/dist/web-extension-esm/src/core/user/additional_user_info.d.ts +31 -0
  1500. package/dist/web-extension-esm/src/core/user/id_token_result.d.ts +48 -0
  1501. package/dist/web-extension-esm/src/core/user/invalidation.d.ts +18 -0
  1502. package/dist/web-extension-esm/src/core/user/link_unlink.d.ts +30 -0
  1503. package/dist/web-extension-esm/src/core/user/proactive_refresh.d.ts +34 -0
  1504. package/dist/web-extension-esm/src/core/user/reauthenticate.d.ts +20 -0
  1505. package/dist/web-extension-esm/src/core/user/reload.d.ts +29 -0
  1506. package/dist/web-extension-esm/src/core/user/token_manager.d.ts +50 -0
  1507. package/dist/web-extension-esm/src/core/user/user_credential_impl.d.ts +37 -0
  1508. package/dist/web-extension-esm/src/core/user/user_impl.d.ts +74 -0
  1509. package/dist/web-extension-esm/src/core/user/user_metadata.d.ts +27 -0
  1510. package/dist/web-extension-esm/src/core/util/assert.d.ts +94 -0
  1511. package/dist/web-extension-esm/src/core/util/browser.d.ts +50 -0
  1512. package/dist/web-extension-esm/src/core/util/delay.d.ts +31 -0
  1513. package/dist/web-extension-esm/src/core/util/emulator.d.ts +18 -0
  1514. package/dist/web-extension-esm/src/core/util/event_id.d.ts +17 -0
  1515. package/dist/web-extension-esm/src/core/util/fetch_provider.d.ts +25 -0
  1516. package/dist/web-extension-esm/src/core/util/handler.d.ts +20 -0
  1517. package/dist/web-extension-esm/src/core/util/instantiator.d.ts +28 -0
  1518. package/dist/web-extension-esm/src/core/util/location.d.ts +19 -0
  1519. package/dist/web-extension-esm/src/core/util/log.d.ts +23 -0
  1520. package/dist/web-extension-esm/src/core/util/navigator.d.ts +21 -0
  1521. package/dist/web-extension-esm/src/core/util/providers.d.ts +23 -0
  1522. package/dist/web-extension-esm/src/core/util/resolver.d.ts +25 -0
  1523. package/dist/web-extension-esm/src/core/util/time.d.ts +17 -0
  1524. package/dist/web-extension-esm/src/core/util/validate_origin.d.ts +18 -0
  1525. package/dist/web-extension-esm/src/core/util/version.d.ts +31 -0
  1526. package/dist/web-extension-esm/src/index.d.ts +18 -0
  1527. package/dist/web-extension-esm/src/mfa/assertions/totp.d.ts +124 -0
  1528. package/dist/web-extension-esm/src/mfa/index.d.ts +18 -0
  1529. package/dist/web-extension-esm/src/mfa/mfa_assertion.d.ts +27 -0
  1530. package/dist/web-extension-esm/src/mfa/mfa_error.d.ts +35 -0
  1531. package/dist/web-extension-esm/src/mfa/mfa_info.d.ts +36 -0
  1532. package/dist/web-extension-esm/src/mfa/mfa_resolver.d.ts +41 -0
  1533. package/dist/web-extension-esm/src/mfa/mfa_session.d.ts +39 -0
  1534. package/dist/web-extension-esm/src/mfa/mfa_user.d.ts +38 -0
  1535. package/dist/web-extension-esm/src/model/application_verifier.d.ts +23 -0
  1536. package/dist/web-extension-esm/src/model/auth.d.ts +90 -0
  1537. package/dist/web-extension-esm/src/model/enum_maps.d.ts +98 -0
  1538. package/dist/web-extension-esm/src/model/enums.d.ts +74 -0
  1539. package/dist/web-extension-esm/src/model/id_token.d.ts +87 -0
  1540. package/dist/web-extension-esm/src/model/password_policy.d.ts +111 -0
  1541. package/dist/web-extension-esm/src/model/popup_redirect.d.ts +94 -0
  1542. package/dist/web-extension-esm/src/model/public_types.d.ts +1291 -0
  1543. package/dist/web-extension-esm/src/model/user.d.ts +83 -0
  1544. package/dist/web-extension-esm/src/platform_browser/auth_window.d.ts +37 -0
  1545. package/dist/web-extension-esm/src/platform_browser/iframe/gapi.d.ts +19 -0
  1546. package/dist/web-extension-esm/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  1547. package/dist/web-extension-esm/src/platform_browser/iframe/iframe.d.ts +18 -0
  1548. package/dist/web-extension-esm/src/platform_browser/index.d.ts +27 -0
  1549. package/dist/web-extension-esm/src/platform_browser/load_js.d.ts +29 -0
  1550. package/dist/web-extension-esm/src/platform_browser/messagechannel/index.d.ts +87 -0
  1551. package/dist/web-extension-esm/src/platform_browser/messagechannel/promise.d.ts +33 -0
  1552. package/dist/web-extension-esm/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  1553. package/dist/web-extension-esm/src/platform_browser/messagechannel/sender.d.ts +46 -0
  1554. package/dist/web-extension-esm/src/platform_browser/mfa/assertions/phone.d.ts +59 -0
  1555. package/dist/web-extension-esm/src/platform_browser/persistence/browser.d.ts +27 -0
  1556. package/dist/web-extension-esm/src/platform_browser/persistence/cookie_storage.d.ts +40 -0
  1557. package/dist/web-extension-esm/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  1558. package/dist/web-extension-esm/src/platform_browser/persistence/local_storage.d.ts +25 -0
  1559. package/dist/web-extension-esm/src/platform_browser/persistence/session_storage.d.ts +24 -0
  1560. package/dist/web-extension-esm/src/platform_browser/popup_redirect.d.ts +27 -0
  1561. package/dist/web-extension-esm/src/platform_browser/providers/phone.d.ts +154 -0
  1562. package/dist/web-extension-esm/src/platform_browser/recaptcha/recaptcha.d.ts +78 -0
  1563. package/dist/web-extension-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +45 -0
  1564. package/dist/web-extension-esm/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  1565. package/dist/web-extension-esm/src/platform_browser/recaptcha/recaptcha_mock.d.ts +66 -0
  1566. package/dist/web-extension-esm/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +92 -0
  1567. package/dist/web-extension-esm/src/platform_browser/strategies/phone.d.ts +116 -0
  1568. package/dist/web-extension-esm/src/platform_browser/strategies/popup.d.ts +109 -0
  1569. package/dist/web-extension-esm/src/platform_browser/strategies/redirect.d.ts +176 -0
  1570. package/dist/web-extension-esm/src/platform_browser/util/popup.d.ts +24 -0
  1571. package/dist/web-extension-esm/src/platform_browser/util/worker.d.ts +20 -0
  1572. package/dist/web-extension-esm/src/platform_cordova/plugins.d.ts +42 -0
  1573. package/dist/web-extension-esm/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  1574. package/dist/web-extension-esm/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  1575. package/dist/web-extension-esm/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  1576. package/dist/web-extension-esm/src/platform_cordova/strategies/redirect.d.ts +20 -0
  1577. package/dist/web-extension-esm/src/platform_node/index.d.ts +51 -0
  1578. package/dist/web-extension-esm/src/platform_react_native/persistence/react_native.d.ts +25 -0
  1579. package/dist/web-extension-esm/test/helpers/api/helper.d.ts +22 -0
  1580. package/dist/web-extension-esm/test/helpers/delay.d.ts +20 -0
  1581. package/dist/web-extension-esm/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  1582. package/dist/web-extension-esm/test/helpers/fake_service_worker.d.ts +22 -0
  1583. package/dist/web-extension-esm/test/helpers/id_token_response.d.ts +18 -0
  1584. package/dist/web-extension-esm/test/helpers/iframe_event.d.ts +19 -0
  1585. package/dist/web-extension-esm/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  1586. package/dist/web-extension-esm/test/helpers/integration/helpers.d.ts +32 -0
  1587. package/dist/web-extension-esm/test/helpers/integration/settings.d.ts +23 -0
  1588. package/dist/web-extension-esm/test/helpers/jwt.d.ts +17 -0
  1589. package/dist/web-extension-esm/test/helpers/mock_auth.d.ts +47 -0
  1590. package/dist/web-extension-esm/test/helpers/mock_auth_credential.d.ts +31 -0
  1591. package/dist/web-extension-esm/test/helpers/mock_fetch.d.ts +31 -0
  1592. package/dist/web-extension-esm/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  1593. package/dist/web-extension-esm/test/helpers/redirect_persistence.d.ts +24 -0
  1594. package/dist/web-extension-esm/test/helpers/timeout_stub.d.ts +34 -0
  1595. package/dist/web-extension-esm/test/integration/flows/middleware_test_generator.d.ts +18 -0
  1596. package/dist/web-extension-esm/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  1597. package/dist/web-extension-esm/test/integration/webdriver/util/functions.d.ts +81 -0
  1598. package/dist/web-extension-esm/test/integration/webdriver/util/idp_page.d.ts +31 -0
  1599. package/dist/web-extension-esm/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  1600. package/dist/web-extension-esm/test/integration/webdriver/util/test_runner.d.ts +19 -0
  1601. package/dist/web-extension-esm/test/integration/webdriver/util/test_server.d.ts +27 -0
  1602. package/dist/web-extension-esm/test/integration/webdriver/util/ui_page.d.ts +33 -0
  1603. package/dist/web-extension-esm/tsdoc-metadata.json +11 -0
  1604. package/internal/package.json +12 -0
  1605. package/package.json +186 -0
  1606. package/web-extension/package.json +8 -0
@@ -0,0 +1,3466 @@
1
+ import { a8 as STORAGE_AVAILABLE_KEY, a9 as _isMobileBrowser, aa as _isIE10, ab as Delay, ac as _window, ad as _assert, ae as isV2, af as _createError, ag as _recaptchaV2ScriptUrl, ah as _loadJS, ai as MockReCaptcha, aj as _generateCallbackName, ak as _castAuth, al as _isHttpOrHttps, am as _isWorker, an as getRecaptchaParams, ao as _serverAppCurrentUserOperationNotSupportedError, z as signInWithCredential, ap as _assertLinkedStatus, B as linkWithCredential, C as reauthenticateWithCredential, aq as _initializeRecaptchaConfig, ar as FAKE_TOKEN, as as startEnrollPhoneMfa, at as handleRecaptchaFlow, au as startSignInPhoneMfa, av as sendPhoneVerificationCode, aw as _link$1, P as PhoneAuthCredential, ax as _getInstance, ay as _signInWithCredential, az as _reauthenticate, m as AuthCredential, aA as signInWithIdp, aB as _fail, aC as debugAssert, aD as _assertInstanceOf, aE as _generateEventId, aF as FederatedAuthProvider, aG as _persistenceKeyName, aH as _performApiRequest, aI as _getCurrentUrl, aJ as _gapiScriptUrl, aK as _emulatorUrl, aL as _isChromeIOS, aM as _isFirefox, aN as _isIOSStandalone, aO as BaseOAuthProvider, aP as _setWindowLocation, aQ as _isSafari, aR as _isIOS, aS as MultiFactorAssertionImpl, aT as finalizeEnrollPhoneMfa, aU as finalizeSignInPhoneMfa, r as registerAuth, i as initializeAuth, a as indexedDBLocalPersistence, e as beforeAuthStateChanged, o as onIdTokenChanged, c as connectAuthEmulator, aV as _setExternalJSProvider, aW as _isAndroid, aX as _isIOS7Or8 } from './register-7238101c.js';
2
+ export { Y as ActionCodeURL, m as AuthCredential, A as AuthErrorCodes, aZ as AuthImpl, E as EmailAuthCredential, q as EmailAuthProvider, F as FacebookAuthProvider, a$ as FetchProvider, t as GithubAuthProvider, G as GoogleAuthProvider, O as OAuthCredential, w as OAuthProvider, P as PhoneAuthCredential, b0 as SAMLAuthCredential, S as SAMLAuthProvider, T as TotpMultiFactorGenerator, b as TotpSecret, x as TwitterAuthProvider, aY as UserImpl, ad as _assert, ak as _castAuth, aB as _fail, aE as _generateEventId, a_ as _getClientVersion, ax as _getInstance, aG as _persistenceKeyName, J as applyActionCode, e as beforeAuthStateChanged, K as checkActionCode, I as confirmPasswordReset, c as connectAuthEmulator, M as createUserWithEmailAndPassword, l as debugErrorMap, k as deleteUser, V as fetchSignInMethodsForEmail, a4 as getAdditionalUserInfo, a1 as getIdToken, a2 as getIdTokenResult, a6 as getMultiFactorResolver, n as inMemoryPersistence, a as indexedDBLocalPersistence, i as initializeAuth, d as initializeRecaptchaConfig, R as isSignInWithEmailLink, B as linkWithCredential, a7 as multiFactor, f as onAuthStateChanged, o as onIdTokenChanged, Z as parseActionCodeURL, p as prodErrorMap, C as reauthenticateWithCredential, a5 as reload, j as revokeAccessToken, W as sendEmailVerification, H as sendPasswordResetEmail, Q as sendSignInLinkToEmail, s as setPersistence, y as signInAnonymously, z as signInWithCredential, D as signInWithCustomToken, N as signInWithEmailAndPassword, U as signInWithEmailLink, h as signOut, a3 as unlink, g as updateCurrentUser, $ as updateEmail, a0 as updatePassword, _ as updateProfile, u as useDeviceLanguage, v as validatePassword, X as verifyBeforeUpdateEmail, L as verifyPasswordResetCode } from './register-7238101c.js';
3
+ import { querystring, getModularInstance, getUA, isEmpty, getExperimentalSetting, getDefaultEmulatorHost, querystringDecode } from '@firebase/util';
4
+ import { _isFirebaseServerApp, SDK_VERSION, _getProvider, getApp } from '@firebase/app';
5
+ import '@firebase/component';
6
+ import '@firebase/logger';
7
+
8
+ /**
9
+ * @license
10
+ * Copyright 2021 Google LLC
11
+ *
12
+ * Licensed under the Apache License, Version 2.0 (the "License");
13
+ * you may not use this file except in compliance with the License.
14
+ * You may obtain a copy of the License at
15
+ *
16
+ * http://www.apache.org/licenses/LICENSE-2.0
17
+ *
18
+ * Unless required by applicable law or agreed to in writing, software
19
+ * distributed under the License is distributed on an "AS IS" BASIS,
20
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21
+ * See the License for the specific language governing permissions and
22
+ * limitations under the License.
23
+ */
24
+ /**
25
+ * An enum of factors that may be used for multifactor authentication.
26
+ *
27
+ * @public
28
+ */
29
+ const FactorId = {
30
+ /** Phone as second factor */
31
+ PHONE: 'phone',
32
+ TOTP: 'totp'
33
+ };
34
+ /**
35
+ * Enumeration of supported providers.
36
+ *
37
+ * @public
38
+ */
39
+ const ProviderId = {
40
+ /** Facebook provider ID */
41
+ FACEBOOK: 'facebook.com',
42
+ /** GitHub provider ID */
43
+ GITHUB: 'github.com',
44
+ /** Google provider ID */
45
+ GOOGLE: 'google.com',
46
+ /** Password provider */
47
+ PASSWORD: 'password',
48
+ /** Phone provider */
49
+ PHONE: 'phone',
50
+ /** Twitter provider ID */
51
+ TWITTER: 'twitter.com'
52
+ };
53
+ /**
54
+ * Enumeration of supported sign-in methods.
55
+ *
56
+ * @public
57
+ */
58
+ const SignInMethod = {
59
+ /** Email link sign in method */
60
+ EMAIL_LINK: 'emailLink',
61
+ /** Email/password sign in method */
62
+ EMAIL_PASSWORD: 'password',
63
+ /** Facebook sign in method */
64
+ FACEBOOK: 'facebook.com',
65
+ /** GitHub sign in method */
66
+ GITHUB: 'github.com',
67
+ /** Google sign in method */
68
+ GOOGLE: 'google.com',
69
+ /** Phone sign in method */
70
+ PHONE: 'phone',
71
+ /** Twitter sign in method */
72
+ TWITTER: 'twitter.com'
73
+ };
74
+ /**
75
+ * Enumeration of supported operation types.
76
+ *
77
+ * @public
78
+ */
79
+ const OperationType = {
80
+ /** Operation involving linking an additional provider to an already signed-in user. */
81
+ LINK: 'link',
82
+ /** Operation involving using a provider to reauthenticate an already signed-in user. */
83
+ REAUTHENTICATE: 'reauthenticate',
84
+ /** Operation involving signing in a user. */
85
+ SIGN_IN: 'signIn'
86
+ };
87
+ /**
88
+ * An enumeration of the possible email action types.
89
+ *
90
+ * @public
91
+ */
92
+ const ActionCodeOperation = {
93
+ /** The email link sign-in action. */
94
+ EMAIL_SIGNIN: 'EMAIL_SIGNIN',
95
+ /** The password reset action. */
96
+ PASSWORD_RESET: 'PASSWORD_RESET',
97
+ /** The email revocation action. */
98
+ RECOVER_EMAIL: 'RECOVER_EMAIL',
99
+ /** The revert second factor addition email action. */
100
+ REVERT_SECOND_FACTOR_ADDITION: 'REVERT_SECOND_FACTOR_ADDITION',
101
+ /** The revert second factor addition email action. */
102
+ VERIFY_AND_CHANGE_EMAIL: 'VERIFY_AND_CHANGE_EMAIL',
103
+ /** The email verification action. */
104
+ VERIFY_EMAIL: 'VERIFY_EMAIL'
105
+ };
106
+
107
+ /**
108
+ * @license
109
+ * Copyright 2019 Google LLC
110
+ *
111
+ * Licensed under the Apache License, Version 2.0 (the "License");
112
+ * you may not use this file except in compliance with the License.
113
+ * You may obtain a copy of the License at
114
+ *
115
+ * http://www.apache.org/licenses/LICENSE-2.0
116
+ *
117
+ * Unless required by applicable law or agreed to in writing, software
118
+ * distributed under the License is distributed on an "AS IS" BASIS,
119
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
120
+ * See the License for the specific language governing permissions and
121
+ * limitations under the License.
122
+ */
123
+ // There are two different browser persistence types: local and session.
124
+ // Both have the same implementation but use a different underlying storage
125
+ // object.
126
+ class BrowserPersistenceClass {
127
+ constructor(storageRetriever, type) {
128
+ this.storageRetriever = storageRetriever;
129
+ this.type = type;
130
+ }
131
+ _isAvailable() {
132
+ try {
133
+ if (!this.storage) {
134
+ return Promise.resolve(false);
135
+ }
136
+ this.storage.setItem(STORAGE_AVAILABLE_KEY, '1');
137
+ this.storage.removeItem(STORAGE_AVAILABLE_KEY);
138
+ return Promise.resolve(true);
139
+ }
140
+ catch {
141
+ return Promise.resolve(false);
142
+ }
143
+ }
144
+ _set(key, value) {
145
+ this.storage.setItem(key, JSON.stringify(value));
146
+ return Promise.resolve();
147
+ }
148
+ _get(key) {
149
+ const json = this.storage.getItem(key);
150
+ return Promise.resolve(json ? JSON.parse(json) : null);
151
+ }
152
+ _remove(key) {
153
+ this.storage.removeItem(key);
154
+ return Promise.resolve();
155
+ }
156
+ get storage() {
157
+ return this.storageRetriever();
158
+ }
159
+ }
160
+
161
+ /**
162
+ * @license
163
+ * Copyright 2020 Google LLC
164
+ *
165
+ * Licensed under the Apache License, Version 2.0 (the "License");
166
+ * you may not use this file except in compliance with the License.
167
+ * You may obtain a copy of the License at
168
+ *
169
+ * http://www.apache.org/licenses/LICENSE-2.0
170
+ *
171
+ * Unless required by applicable law or agreed to in writing, software
172
+ * distributed under the License is distributed on an "AS IS" BASIS,
173
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
174
+ * See the License for the specific language governing permissions and
175
+ * limitations under the License.
176
+ */
177
+ // The polling period in case events are not supported
178
+ const _POLLING_INTERVAL_MS = 1000;
179
+ // The IE 10 localStorage cross tab synchronization delay in milliseconds
180
+ const IE10_LOCAL_STORAGE_SYNC_DELAY = 10;
181
+ class BrowserLocalPersistence extends BrowserPersistenceClass {
182
+ constructor() {
183
+ super(() => window.localStorage, "LOCAL" /* PersistenceType.LOCAL */);
184
+ this.boundEventHandler = (event, poll) => this.onStorageEvent(event, poll);
185
+ this.listeners = {};
186
+ this.localCache = {};
187
+ // setTimeout return value is platform specific
188
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
189
+ this.pollTimer = null;
190
+ // Whether to use polling instead of depending on window events
191
+ this.fallbackToPolling = _isMobileBrowser();
192
+ this._shouldAllowMigration = true;
193
+ }
194
+ forAllChangedKeys(cb) {
195
+ // Check all keys with listeners on them.
196
+ for (const key of Object.keys(this.listeners)) {
197
+ // Get value from localStorage.
198
+ const newValue = this.storage.getItem(key);
199
+ const oldValue = this.localCache[key];
200
+ // If local map value does not match, trigger listener with storage event.
201
+ // Differentiate this simulated event from the real storage event.
202
+ if (newValue !== oldValue) {
203
+ cb(key, oldValue, newValue);
204
+ }
205
+ }
206
+ }
207
+ onStorageEvent(event, poll = false) {
208
+ // Key would be null in some situations, like when localStorage is cleared
209
+ if (!event.key) {
210
+ this.forAllChangedKeys((key, _oldValue, newValue) => {
211
+ this.notifyListeners(key, newValue);
212
+ });
213
+ return;
214
+ }
215
+ const key = event.key;
216
+ // Check the mechanism how this event was detected.
217
+ // The first event will dictate the mechanism to be used.
218
+ if (poll) {
219
+ // Environment detects storage changes via polling.
220
+ // Remove storage event listener to prevent possible event duplication.
221
+ this.detachListener();
222
+ }
223
+ else {
224
+ // Environment detects storage changes via storage event listener.
225
+ // Remove polling listener to prevent possible event duplication.
226
+ this.stopPolling();
227
+ }
228
+ const triggerListeners = () => {
229
+ // Keep local map up to date in case storage event is triggered before
230
+ // poll.
231
+ const storedValue = this.storage.getItem(key);
232
+ if (!poll && this.localCache[key] === storedValue) {
233
+ // Real storage event which has already been detected, do nothing.
234
+ // This seems to trigger in some IE browsers for some reason.
235
+ return;
236
+ }
237
+ this.notifyListeners(key, storedValue);
238
+ };
239
+ const storedValue = this.storage.getItem(key);
240
+ if (_isIE10() &&
241
+ storedValue !== event.newValue &&
242
+ event.newValue !== event.oldValue) {
243
+ // IE 10 has this weird bug where a storage event would trigger with the
244
+ // correct key, oldValue and newValue but localStorage.getItem(key) does
245
+ // not yield the updated value until a few milliseconds. This ensures
246
+ // this recovers from that situation.
247
+ setTimeout(triggerListeners, IE10_LOCAL_STORAGE_SYNC_DELAY);
248
+ }
249
+ else {
250
+ triggerListeners();
251
+ }
252
+ }
253
+ notifyListeners(key, value) {
254
+ this.localCache[key] = value;
255
+ const listeners = this.listeners[key];
256
+ if (listeners) {
257
+ for (const listener of Array.from(listeners)) {
258
+ listener(value ? JSON.parse(value) : value);
259
+ }
260
+ }
261
+ }
262
+ startPolling() {
263
+ this.stopPolling();
264
+ this.pollTimer = setInterval(() => {
265
+ this.forAllChangedKeys((key, oldValue, newValue) => {
266
+ this.onStorageEvent(new StorageEvent('storage', {
267
+ key,
268
+ oldValue,
269
+ newValue
270
+ }),
271
+ /* poll */ true);
272
+ });
273
+ }, _POLLING_INTERVAL_MS);
274
+ }
275
+ stopPolling() {
276
+ if (this.pollTimer) {
277
+ clearInterval(this.pollTimer);
278
+ this.pollTimer = null;
279
+ }
280
+ }
281
+ attachListener() {
282
+ window.addEventListener('storage', this.boundEventHandler);
283
+ }
284
+ detachListener() {
285
+ window.removeEventListener('storage', this.boundEventHandler);
286
+ }
287
+ _addListener(key, listener) {
288
+ if (Object.keys(this.listeners).length === 0) {
289
+ // Whether browser can detect storage event when it had already been pushed to the background.
290
+ // This may happen in some mobile browsers. A localStorage change in the foreground window
291
+ // will not be detected in the background window via the storage event.
292
+ // This was detected in iOS 7.x mobile browsers
293
+ if (this.fallbackToPolling) {
294
+ this.startPolling();
295
+ }
296
+ else {
297
+ this.attachListener();
298
+ }
299
+ }
300
+ if (!this.listeners[key]) {
301
+ this.listeners[key] = new Set();
302
+ // Populate the cache to avoid spuriously triggering on first poll.
303
+ this.localCache[key] = this.storage.getItem(key);
304
+ }
305
+ this.listeners[key].add(listener);
306
+ }
307
+ _removeListener(key, listener) {
308
+ if (this.listeners[key]) {
309
+ this.listeners[key].delete(listener);
310
+ if (this.listeners[key].size === 0) {
311
+ delete this.listeners[key];
312
+ }
313
+ }
314
+ if (Object.keys(this.listeners).length === 0) {
315
+ this.detachListener();
316
+ this.stopPolling();
317
+ }
318
+ }
319
+ // Update local cache on base operations:
320
+ async _set(key, value) {
321
+ await super._set(key, value);
322
+ this.localCache[key] = JSON.stringify(value);
323
+ }
324
+ async _get(key) {
325
+ const value = await super._get(key);
326
+ this.localCache[key] = JSON.stringify(value);
327
+ return value;
328
+ }
329
+ async _remove(key) {
330
+ await super._remove(key);
331
+ delete this.localCache[key];
332
+ }
333
+ }
334
+ BrowserLocalPersistence.type = 'LOCAL';
335
+ /**
336
+ * An implementation of {@link Persistence} of type `LOCAL` using `localStorage`
337
+ * for the underlying storage.
338
+ *
339
+ * @public
340
+ */
341
+ const browserLocalPersistence = BrowserLocalPersistence;
342
+
343
+ /**
344
+ * @license
345
+ * Copyright 2025 Google LLC
346
+ *
347
+ * Licensed under the Apache License, Version 2.0 (the "License");
348
+ * you may not use this file except in compliance with the License.
349
+ * You may obtain a copy of the License at
350
+ *
351
+ * http://www.apache.org/licenses/LICENSE-2.0
352
+ *
353
+ * Unless required by applicable law or agreed to in writing, software
354
+ * distributed under the License is distributed on an "AS IS" BASIS,
355
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
356
+ * See the License for the specific language governing permissions and
357
+ * limitations under the License.
358
+ */
359
+ const POLLING_INTERVAL_MS = 1000;
360
+ // Pull a cookie value from document.cookie
361
+ function getDocumentCookie(name) {
362
+ const escapedName = name.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&');
363
+ const matcher = RegExp(`${escapedName}=([^;]+)`);
364
+ return document.cookie.match(matcher)?.[1] ?? null;
365
+ }
366
+ // Produce a sanitized cookie name from the persistence key
367
+ function getCookieName(key) {
368
+ // __HOST- doesn't work in localhost https://issues.chromium.org/issues/40196122 but it has
369
+ // desirable security properties, so lets use a different cookie name while in dev-mode.
370
+ // Already checked isSecureContext in _isAvailable, so if it's http we're hitting local.
371
+ const isDevMode = window.location.protocol === 'http:';
372
+ return `${isDevMode ? '__dev_' : '__HOST-'}FIREBASE_${key.split(':')[3]}`;
373
+ }
374
+ class CookiePersistence {
375
+ constructor() {
376
+ this.type = "COOKIE" /* PersistenceType.COOKIE */;
377
+ this.listenerUnsubscribes = new Map();
378
+ }
379
+ // used to get the URL to the backend to proxy to
380
+ _getFinalTarget(originalUrl) {
381
+ if (typeof window === undefined) {
382
+ return originalUrl;
383
+ }
384
+ const url = new URL(`${window.location.origin}/__cookies__`);
385
+ url.searchParams.set('finalTarget', originalUrl);
386
+ return url;
387
+ }
388
+ // To be a usable persistence method in a chain browserCookiePersistence ensures that
389
+ // prerequisites have been met, namely that we're in a secureContext, navigator and document are
390
+ // available and cookies are enabled. Not all UAs support these method, so fallback accordingly.
391
+ async _isAvailable() {
392
+ if (typeof isSecureContext === 'boolean' && !isSecureContext) {
393
+ return false;
394
+ }
395
+ if (typeof navigator === 'undefined' || typeof document === 'undefined') {
396
+ return false;
397
+ }
398
+ return navigator.cookieEnabled ?? true;
399
+ }
400
+ // Set should be a noop as we expect middleware to handle this
401
+ async _set(_key, _value) {
402
+ return;
403
+ }
404
+ // Attempt to get the cookie from cookieStore, fallback to document.cookie
405
+ async _get(key) {
406
+ if (!this._isAvailable()) {
407
+ return null;
408
+ }
409
+ const name = getCookieName(key);
410
+ if (window.cookieStore) {
411
+ const cookie = await window.cookieStore.get(name);
412
+ return cookie?.value;
413
+ }
414
+ return getDocumentCookie(name);
415
+ }
416
+ // Log out by overriding the idToken with a sentinel value of ""
417
+ async _remove(key) {
418
+ if (!this._isAvailable()) {
419
+ return;
420
+ }
421
+ // To make sure we don't hit signout over and over again, only do this operation if we need to
422
+ // with the logout sentinel value of "" this can cause race conditions. Unnecessary set-cookie
423
+ // headers will reduce CDN hit rates too.
424
+ const existingValue = await this._get(key);
425
+ if (!existingValue) {
426
+ return;
427
+ }
428
+ const name = getCookieName(key);
429
+ document.cookie = `${name}=;Max-Age=34560000;Partitioned;Secure;SameSite=Strict;Path=/;Priority=High`;
430
+ await fetch(`/__cookies__`, { method: 'DELETE' }).catch(() => undefined);
431
+ }
432
+ // Listen for cookie changes, both cookieStore and fallback to polling document.cookie
433
+ _addListener(key, listener) {
434
+ if (!this._isAvailable()) {
435
+ return;
436
+ }
437
+ const name = getCookieName(key);
438
+ if (window.cookieStore) {
439
+ const cb = ((event) => {
440
+ const changedCookie = event.changed.find(change => change.name === name);
441
+ if (changedCookie) {
442
+ listener(changedCookie.value);
443
+ }
444
+ const deletedCookie = event.deleted.find(change => change.name === name);
445
+ if (deletedCookie) {
446
+ listener(null);
447
+ }
448
+ });
449
+ const unsubscribe = () => window.cookieStore.removeEventListener('change', cb);
450
+ this.listenerUnsubscribes.set(listener, unsubscribe);
451
+ return window.cookieStore.addEventListener('change', cb);
452
+ }
453
+ let lastValue = getDocumentCookie(name);
454
+ const interval = setInterval(() => {
455
+ const currentValue = getDocumentCookie(name);
456
+ if (currentValue !== lastValue) {
457
+ listener(currentValue);
458
+ lastValue = currentValue;
459
+ }
460
+ }, POLLING_INTERVAL_MS);
461
+ const unsubscribe = () => clearInterval(interval);
462
+ this.listenerUnsubscribes.set(listener, unsubscribe);
463
+ }
464
+ _removeListener(_key, listener) {
465
+ const unsubscribe = this.listenerUnsubscribes.get(listener);
466
+ if (!unsubscribe) {
467
+ return;
468
+ }
469
+ unsubscribe();
470
+ this.listenerUnsubscribes.delete(listener);
471
+ }
472
+ }
473
+ CookiePersistence.type = 'COOKIE';
474
+ /**
475
+ * An implementation of {@link Persistence} of type `COOKIE`, for use on the client side in
476
+ * applications leveraging hybrid rendering and middleware.
477
+ *
478
+ * @remarks This persistence method requires companion middleware to function, such as that provided
479
+ * by {@link https://firebaseopensource.com/projects/firebaseextended/reactfire/ | ReactFire} for
480
+ * NextJS.
481
+ * @beta
482
+ */
483
+ const browserCookiePersistence = CookiePersistence;
484
+
485
+ /**
486
+ * @license
487
+ * Copyright 2020 Google LLC
488
+ *
489
+ * Licensed under the Apache License, Version 2.0 (the "License");
490
+ * you may not use this file except in compliance with the License.
491
+ * You may obtain a copy of the License at
492
+ *
493
+ * http://www.apache.org/licenses/LICENSE-2.0
494
+ *
495
+ * Unless required by applicable law or agreed to in writing, software
496
+ * distributed under the License is distributed on an "AS IS" BASIS,
497
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
498
+ * See the License for the specific language governing permissions and
499
+ * limitations under the License.
500
+ */
501
+ class BrowserSessionPersistence extends BrowserPersistenceClass {
502
+ constructor() {
503
+ super(() => window.sessionStorage, "SESSION" /* PersistenceType.SESSION */);
504
+ }
505
+ _addListener(_key, _listener) {
506
+ // Listeners are not supported for session storage since it cannot be shared across windows
507
+ return;
508
+ }
509
+ _removeListener(_key, _listener) {
510
+ // Listeners are not supported for session storage since it cannot be shared across windows
511
+ return;
512
+ }
513
+ }
514
+ BrowserSessionPersistence.type = 'SESSION';
515
+ /**
516
+ * An implementation of {@link Persistence} of `SESSION` using `sessionStorage`
517
+ * for the underlying storage.
518
+ *
519
+ * @public
520
+ */
521
+ const browserSessionPersistence = BrowserSessionPersistence;
522
+
523
+ /**
524
+ * @license
525
+ * Copyright 2020 Google LLC
526
+ *
527
+ * Licensed under the Apache License, Version 2.0 (the "License");
528
+ * you may not use this file except in compliance with the License.
529
+ * You may obtain a copy of the License at
530
+ *
531
+ * http://www.apache.org/licenses/LICENSE-2.0
532
+ *
533
+ * Unless required by applicable law or agreed to in writing, software
534
+ * distributed under the License is distributed on an "AS IS" BASIS,
535
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
536
+ * See the License for the specific language governing permissions and
537
+ * limitations under the License.
538
+ */
539
+ // ReCaptcha will load using the same callback, so the callback function needs
540
+ // to be kept around
541
+ const _JSLOAD_CALLBACK = _generateCallbackName('rcb');
542
+ const NETWORK_TIMEOUT_DELAY = new Delay(30000, 60000);
543
+ /**
544
+ * Loader for the GReCaptcha library. There should only ever be one of this.
545
+ */
546
+ class ReCaptchaLoaderImpl {
547
+ constructor() {
548
+ this.hostLanguage = '';
549
+ this.counter = 0;
550
+ /**
551
+ * Check for `render()` method. `window.grecaptcha` will exist if the Enterprise
552
+ * version of the ReCAPTCHA script was loaded by someone else (e.g. App Check) but
553
+ * `window.grecaptcha.render()` will not. Another load will add it.
554
+ */
555
+ this.librarySeparatelyLoaded = !!_window().grecaptcha?.render;
556
+ }
557
+ load(auth, hl = '') {
558
+ _assert(isHostLanguageValid(hl), auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
559
+ if (this.shouldResolveImmediately(hl) && isV2(_window().grecaptcha)) {
560
+ return Promise.resolve(_window().grecaptcha);
561
+ }
562
+ return new Promise((resolve, reject) => {
563
+ const networkTimeout = _window().setTimeout(() => {
564
+ reject(_createError(auth, "network-request-failed" /* AuthErrorCode.NETWORK_REQUEST_FAILED */));
565
+ }, NETWORK_TIMEOUT_DELAY.get());
566
+ _window()[_JSLOAD_CALLBACK] = () => {
567
+ _window().clearTimeout(networkTimeout);
568
+ delete _window()[_JSLOAD_CALLBACK];
569
+ const recaptcha = _window().grecaptcha;
570
+ if (!recaptcha || !isV2(recaptcha)) {
571
+ reject(_createError(auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */));
572
+ return;
573
+ }
574
+ // Wrap the recaptcha render function so that we know if the developer has
575
+ // called it separately
576
+ const render = recaptcha.render;
577
+ recaptcha.render = (container, params) => {
578
+ const widgetId = render(container, params);
579
+ this.counter++;
580
+ return widgetId;
581
+ };
582
+ this.hostLanguage = hl;
583
+ resolve(recaptcha);
584
+ };
585
+ const url = `${_recaptchaV2ScriptUrl()}?${querystring({
586
+ onload: _JSLOAD_CALLBACK,
587
+ render: 'explicit',
588
+ hl
589
+ })}`;
590
+ _loadJS(url).catch(() => {
591
+ clearTimeout(networkTimeout);
592
+ reject(_createError(auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */));
593
+ });
594
+ });
595
+ }
596
+ clearedOneInstance() {
597
+ this.counter--;
598
+ }
599
+ shouldResolveImmediately(hl) {
600
+ // We can resolve immediately if:
601
+ // • grecaptcha is already defined AND (
602
+ // 1. the requested language codes are the same OR
603
+ // 2. there exists already a ReCaptcha on the page
604
+ // 3. the library was already loaded by the app
605
+ // In cases (2) and (3), we _can't_ reload as it would break the recaptchas
606
+ // that are already in the page
607
+ return (!!_window().grecaptcha?.render &&
608
+ (hl === this.hostLanguage ||
609
+ this.counter > 0 ||
610
+ this.librarySeparatelyLoaded));
611
+ }
612
+ }
613
+ function isHostLanguageValid(hl) {
614
+ return hl.length <= 6 && /^\s*[a-zA-Z0-9\-]*\s*$/.test(hl);
615
+ }
616
+ class MockReCaptchaLoaderImpl {
617
+ async load(auth) {
618
+ return new MockReCaptcha(auth);
619
+ }
620
+ clearedOneInstance() { }
621
+ }
622
+
623
+ /**
624
+ * @license
625
+ * Copyright 2020 Google LLC
626
+ *
627
+ * Licensed under the Apache License, Version 2.0 (the "License");
628
+ * you may not use this file except in compliance with the License.
629
+ * You may obtain a copy of the License at
630
+ *
631
+ * http://www.apache.org/licenses/LICENSE-2.0
632
+ *
633
+ * Unless required by applicable law or agreed to in writing, software
634
+ * distributed under the License is distributed on an "AS IS" BASIS,
635
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
636
+ * See the License for the specific language governing permissions and
637
+ * limitations under the License.
638
+ */
639
+ const RECAPTCHA_VERIFIER_TYPE = 'recaptcha';
640
+ const DEFAULT_PARAMS = {
641
+ theme: 'light',
642
+ type: 'image'
643
+ };
644
+ /**
645
+ * An {@link https://www.google.com/recaptcha/ | reCAPTCHA}-based application verifier.
646
+ *
647
+ * @remarks
648
+ * `RecaptchaVerifier` does not work in a Node.js environment.
649
+ *
650
+ * @public
651
+ */
652
+ class RecaptchaVerifier {
653
+ /**
654
+ * @param authExtern - The corresponding Firebase {@link Auth} instance.
655
+ *
656
+ * @param containerOrId - The reCAPTCHA container parameter.
657
+ *
658
+ * @remarks
659
+ * This has different meaning depending on whether the reCAPTCHA is hidden or visible. For a
660
+ * visible reCAPTCHA the container must be empty. If a string is used, it has to correspond to
661
+ * an element ID. The corresponding element must also must be in the DOM at the time of
662
+ * initialization.
663
+ *
664
+ * @param parameters - The optional reCAPTCHA parameters.
665
+ *
666
+ * @remarks
667
+ * Check the reCAPTCHA docs for a comprehensive list. All parameters are accepted except for
668
+ * the sitekey. Firebase Auth backend provisions a reCAPTCHA for each project and will
669
+ * configure this upon rendering. For an invisible reCAPTCHA, a size key must have the value
670
+ * 'invisible'.
671
+ */
672
+ constructor(authExtern, containerOrId, parameters = {
673
+ ...DEFAULT_PARAMS
674
+ }) {
675
+ this.parameters = parameters;
676
+ /**
677
+ * The application verifier type.
678
+ *
679
+ * @remarks
680
+ * For a reCAPTCHA verifier, this is 'recaptcha'.
681
+ */
682
+ this.type = RECAPTCHA_VERIFIER_TYPE;
683
+ this.destroyed = false;
684
+ this.widgetId = null;
685
+ this.tokenChangeListeners = new Set();
686
+ this.renderPromise = null;
687
+ this.recaptcha = null;
688
+ this.auth = _castAuth(authExtern);
689
+ this.isInvisible = this.parameters.size === 'invisible';
690
+ _assert(typeof document !== 'undefined', this.auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
691
+ const container = typeof containerOrId === 'string'
692
+ ? document.getElementById(containerOrId)
693
+ : containerOrId;
694
+ _assert(container, this.auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
695
+ this.container = container;
696
+ this.parameters.callback = this.makeTokenCallback(this.parameters.callback);
697
+ this._recaptchaLoader = this.auth.settings.appVerificationDisabledForTesting
698
+ ? new MockReCaptchaLoaderImpl()
699
+ : new ReCaptchaLoaderImpl();
700
+ this.validateStartingState();
701
+ // TODO: Figure out if sdk version is needed
702
+ }
703
+ /**
704
+ * Waits for the user to solve the reCAPTCHA and resolves with the reCAPTCHA token.
705
+ *
706
+ * @returns A Promise for the reCAPTCHA token.
707
+ */
708
+ async verify() {
709
+ this.assertNotDestroyed();
710
+ const id = await this.render();
711
+ const recaptcha = this.getAssertedRecaptcha();
712
+ const response = recaptcha.getResponse(id);
713
+ if (response) {
714
+ return response;
715
+ }
716
+ return new Promise(resolve => {
717
+ const tokenChange = (token) => {
718
+ if (!token) {
719
+ return; // Ignore token expirations.
720
+ }
721
+ this.tokenChangeListeners.delete(tokenChange);
722
+ resolve(token);
723
+ };
724
+ this.tokenChangeListeners.add(tokenChange);
725
+ if (this.isInvisible) {
726
+ recaptcha.execute(id);
727
+ }
728
+ });
729
+ }
730
+ /**
731
+ * Renders the reCAPTCHA widget on the page.
732
+ *
733
+ * @returns A Promise that resolves with the reCAPTCHA widget ID.
734
+ */
735
+ render() {
736
+ try {
737
+ this.assertNotDestroyed();
738
+ }
739
+ catch (e) {
740
+ // This method returns a promise. Since it's not async (we want to return the
741
+ // _same_ promise if rendering is still occurring), the API surface should
742
+ // reject with the error rather than just throw
743
+ return Promise.reject(e);
744
+ }
745
+ if (this.renderPromise) {
746
+ return this.renderPromise;
747
+ }
748
+ this.renderPromise = this.makeRenderPromise().catch(e => {
749
+ this.renderPromise = null;
750
+ throw e;
751
+ });
752
+ return this.renderPromise;
753
+ }
754
+ /** @internal */
755
+ _reset() {
756
+ this.assertNotDestroyed();
757
+ if (this.widgetId !== null) {
758
+ this.getAssertedRecaptcha().reset(this.widgetId);
759
+ }
760
+ }
761
+ /**
762
+ * Clears the reCAPTCHA widget from the page and destroys the instance.
763
+ */
764
+ clear() {
765
+ this.assertNotDestroyed();
766
+ this.destroyed = true;
767
+ this._recaptchaLoader.clearedOneInstance();
768
+ if (!this.isInvisible) {
769
+ this.container.childNodes.forEach(node => {
770
+ this.container.removeChild(node);
771
+ });
772
+ }
773
+ }
774
+ validateStartingState() {
775
+ _assert(!this.parameters.sitekey, this.auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
776
+ _assert(this.isInvisible || !this.container.hasChildNodes(), this.auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
777
+ _assert(typeof document !== 'undefined', this.auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
778
+ }
779
+ makeTokenCallback(existing) {
780
+ return token => {
781
+ this.tokenChangeListeners.forEach(listener => listener(token));
782
+ if (typeof existing === 'function') {
783
+ existing(token);
784
+ }
785
+ else if (typeof existing === 'string') {
786
+ const globalFunc = _window()[existing];
787
+ if (typeof globalFunc === 'function') {
788
+ globalFunc(token);
789
+ }
790
+ }
791
+ };
792
+ }
793
+ assertNotDestroyed() {
794
+ _assert(!this.destroyed, this.auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
795
+ }
796
+ async makeRenderPromise() {
797
+ await this.init();
798
+ if (!this.widgetId) {
799
+ let container = this.container;
800
+ if (!this.isInvisible) {
801
+ const guaranteedEmpty = document.createElement('div');
802
+ container.appendChild(guaranteedEmpty);
803
+ container = guaranteedEmpty;
804
+ }
805
+ this.widgetId = this.getAssertedRecaptcha().render(container, this.parameters);
806
+ }
807
+ return this.widgetId;
808
+ }
809
+ async init() {
810
+ _assert(_isHttpOrHttps() && !_isWorker(), this.auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
811
+ await domReady();
812
+ this.recaptcha = await this._recaptchaLoader.load(this.auth, this.auth.languageCode || undefined);
813
+ const siteKey = await getRecaptchaParams(this.auth);
814
+ _assert(siteKey, this.auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
815
+ this.parameters.sitekey = siteKey;
816
+ }
817
+ getAssertedRecaptcha() {
818
+ _assert(this.recaptcha, this.auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
819
+ return this.recaptcha;
820
+ }
821
+ }
822
+ function domReady() {
823
+ let resolver = null;
824
+ return new Promise(resolve => {
825
+ if (document.readyState === 'complete') {
826
+ resolve();
827
+ return;
828
+ }
829
+ // Document not ready, wait for load before resolving.
830
+ // Save resolver, so we can remove listener in case it was externally
831
+ // cancelled.
832
+ resolver = () => resolve();
833
+ window.addEventListener('load', resolver);
834
+ }).catch(e => {
835
+ if (resolver) {
836
+ window.removeEventListener('load', resolver);
837
+ }
838
+ throw e;
839
+ });
840
+ }
841
+
842
+ /**
843
+ * @license
844
+ * Copyright 2020 Google LLC
845
+ *
846
+ * Licensed under the Apache License, Version 2.0 (the "License");
847
+ * you may not use this file except in compliance with the License.
848
+ * You may obtain a copy of the License at
849
+ *
850
+ * http://www.apache.org/licenses/LICENSE-2.0
851
+ *
852
+ * Unless required by applicable law or agreed to in writing, software
853
+ * distributed under the License is distributed on an "AS IS" BASIS,
854
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
855
+ * See the License for the specific language governing permissions and
856
+ * limitations under the License.
857
+ */
858
+ class ConfirmationResultImpl {
859
+ constructor(verificationId, onConfirmation) {
860
+ this.verificationId = verificationId;
861
+ this.onConfirmation = onConfirmation;
862
+ }
863
+ confirm(verificationCode) {
864
+ const authCredential = PhoneAuthCredential._fromVerification(this.verificationId, verificationCode);
865
+ return this.onConfirmation(authCredential);
866
+ }
867
+ }
868
+ /**
869
+ * Asynchronously signs in using a phone number.
870
+ *
871
+ * @remarks
872
+ * This method sends a code via SMS to the given
873
+ * phone number, and returns a {@link ConfirmationResult}. After the user
874
+ * provides the code sent to their phone, call {@link ConfirmationResult.confirm}
875
+ * with the code to sign the user in.
876
+ *
877
+ * For abuse prevention, this method requires a {@link ApplicationVerifier}.
878
+ * This SDK includes an implementation based on reCAPTCHA v2, {@link RecaptchaVerifier}.
879
+ * This function can work on other platforms that do not support the
880
+ * {@link RecaptchaVerifier} (like React Native), but you need to use a
881
+ * third-party {@link ApplicationVerifier} implementation.
882
+ *
883
+ * If you've enabled project-level reCAPTCHA Enterprise bot protection in
884
+ * Enforce mode, you can omit the {@link ApplicationVerifier}.
885
+ *
886
+ * This method does not work in a Node.js environment or with {@link Auth} instances created with a
887
+ * {@link @firebase/app#FirebaseServerApp}.
888
+ *
889
+ * @example
890
+ * ```javascript
891
+ * // 'recaptcha-container' is the ID of an element in the DOM.
892
+ * const applicationVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');
893
+ * const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);
894
+ * // Obtain a verificationCode from the user.
895
+ * const credential = await confirmationResult.confirm(verificationCode);
896
+ * ```
897
+ *
898
+ * @param auth - The {@link Auth} instance.
899
+ * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).
900
+ * @param appVerifier - The {@link ApplicationVerifier}.
901
+ *
902
+ * @public
903
+ */
904
+ async function signInWithPhoneNumber(auth, phoneNumber, appVerifier) {
905
+ if (_isFirebaseServerApp(auth.app)) {
906
+ return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(auth));
907
+ }
908
+ const authInternal = _castAuth(auth);
909
+ const verificationId = await _verifyPhoneNumber(authInternal, phoneNumber, getModularInstance(appVerifier));
910
+ return new ConfirmationResultImpl(verificationId, cred => signInWithCredential(authInternal, cred));
911
+ }
912
+ /**
913
+ * Links the user account with the given phone number.
914
+ *
915
+ * @remarks
916
+ * This method does not work in a Node.js environment.
917
+ *
918
+ * @param user - The user.
919
+ * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).
920
+ * @param appVerifier - The {@link ApplicationVerifier}.
921
+ *
922
+ * @public
923
+ */
924
+ async function linkWithPhoneNumber(user, phoneNumber, appVerifier) {
925
+ const userInternal = getModularInstance(user);
926
+ await _assertLinkedStatus(false, userInternal, "phone" /* ProviderId.PHONE */);
927
+ const verificationId = await _verifyPhoneNumber(userInternal.auth, phoneNumber, getModularInstance(appVerifier));
928
+ return new ConfirmationResultImpl(verificationId, cred => linkWithCredential(userInternal, cred));
929
+ }
930
+ /**
931
+ * Re-authenticates a user using a fresh phone credential.
932
+ *
933
+ * @remarks
934
+ * Use before operations such as {@link updatePassword} that require tokens from recent sign-in attempts.
935
+ *
936
+ * This method does not work in a Node.js environment or on any {@link User} signed in by
937
+ * {@link Auth} instances created with a {@link @firebase/app#FirebaseServerApp}.
938
+ *
939
+ * @param user - The user.
940
+ * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).
941
+ * @param appVerifier - The {@link ApplicationVerifier}.
942
+ *
943
+ * @public
944
+ */
945
+ async function reauthenticateWithPhoneNumber(user, phoneNumber, appVerifier) {
946
+ const userInternal = getModularInstance(user);
947
+ if (_isFirebaseServerApp(userInternal.auth.app)) {
948
+ return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(userInternal.auth));
949
+ }
950
+ const verificationId = await _verifyPhoneNumber(userInternal.auth, phoneNumber, getModularInstance(appVerifier));
951
+ return new ConfirmationResultImpl(verificationId, cred => reauthenticateWithCredential(userInternal, cred));
952
+ }
953
+ /**
954
+ * Returns a verification ID to be used in conjunction with the SMS code that is sent.
955
+ *
956
+ */
957
+ async function _verifyPhoneNumber(auth, options, verifier) {
958
+ if (!auth._getRecaptchaConfig()) {
959
+ try {
960
+ await _initializeRecaptchaConfig(auth);
961
+ }
962
+ catch (error) {
963
+ // If an error occurs while fetching the config, there is no way to know the enablement state
964
+ // of Phone provider, so we proceed with recaptcha V2 verification.
965
+ // The error is likely "recaptchaKey undefined", as reCAPTCHA Enterprise is not
966
+ // enabled for any provider.
967
+ console.log('Failed to initialize reCAPTCHA Enterprise config. Triggering the reCAPTCHA v2 verification.');
968
+ }
969
+ }
970
+ try {
971
+ let phoneInfoOptions;
972
+ if (typeof options === 'string') {
973
+ phoneInfoOptions = {
974
+ phoneNumber: options
975
+ };
976
+ }
977
+ else {
978
+ phoneInfoOptions = options;
979
+ }
980
+ if ('session' in phoneInfoOptions) {
981
+ const session = phoneInfoOptions.session;
982
+ if ('phoneNumber' in phoneInfoOptions) {
983
+ _assert(session.type === "enroll" /* MultiFactorSessionType.ENROLL */, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
984
+ const startPhoneMfaEnrollmentRequest = {
985
+ idToken: session.credential,
986
+ phoneEnrollmentInfo: {
987
+ phoneNumber: phoneInfoOptions.phoneNumber,
988
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
989
+ }
990
+ };
991
+ const startEnrollPhoneMfaActionCallback = async (authInstance, request) => {
992
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
993
+ if (request.phoneEnrollmentInfo.captchaResponse === FAKE_TOKEN) {
994
+ _assert(verifier?.type === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
995
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
996
+ return startEnrollPhoneMfa(authInstance, requestWithRecaptchaV2);
997
+ }
998
+ return startEnrollPhoneMfa(authInstance, request);
999
+ };
1000
+ const startPhoneMfaEnrollmentResponse = handleRecaptchaFlow(auth, startPhoneMfaEnrollmentRequest, "mfaSmsEnrollment" /* RecaptchaActionName.MFA_SMS_ENROLLMENT */, startEnrollPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
1001
+ const response = await startPhoneMfaEnrollmentResponse.catch(error => {
1002
+ return Promise.reject(error);
1003
+ });
1004
+ return response.phoneSessionInfo.sessionInfo;
1005
+ }
1006
+ else {
1007
+ _assert(session.type === "signin" /* MultiFactorSessionType.SIGN_IN */, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
1008
+ const mfaEnrollmentId = phoneInfoOptions.multiFactorHint?.uid ||
1009
+ phoneInfoOptions.multiFactorUid;
1010
+ _assert(mfaEnrollmentId, auth, "missing-multi-factor-info" /* AuthErrorCode.MISSING_MFA_INFO */);
1011
+ const startPhoneMfaSignInRequest = {
1012
+ mfaPendingCredential: session.credential,
1013
+ mfaEnrollmentId,
1014
+ phoneSignInInfo: {
1015
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
1016
+ }
1017
+ };
1018
+ const startSignInPhoneMfaActionCallback = async (authInstance, request) => {
1019
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
1020
+ if (request.phoneSignInInfo.captchaResponse === FAKE_TOKEN) {
1021
+ _assert(verifier?.type === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
1022
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
1023
+ return startSignInPhoneMfa(authInstance, requestWithRecaptchaV2);
1024
+ }
1025
+ return startSignInPhoneMfa(authInstance, request);
1026
+ };
1027
+ const startPhoneMfaSignInResponse = handleRecaptchaFlow(auth, startPhoneMfaSignInRequest, "mfaSmsSignIn" /* RecaptchaActionName.MFA_SMS_SIGNIN */, startSignInPhoneMfaActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
1028
+ const response = await startPhoneMfaSignInResponse.catch(error => {
1029
+ return Promise.reject(error);
1030
+ });
1031
+ return response.phoneResponseInfo.sessionInfo;
1032
+ }
1033
+ }
1034
+ else {
1035
+ const sendPhoneVerificationCodeRequest = {
1036
+ phoneNumber: phoneInfoOptions.phoneNumber,
1037
+ clientType: "CLIENT_TYPE_WEB" /* RecaptchaClientType.WEB */
1038
+ };
1039
+ const sendPhoneVerificationCodeActionCallback = async (authInstance, request) => {
1040
+ // If reCAPTCHA Enterprise token is FAKE_TOKEN, fetch reCAPTCHA v2 token and inject into request.
1041
+ if (request.captchaResponse === FAKE_TOKEN) {
1042
+ _assert(verifier?.type === RECAPTCHA_VERIFIER_TYPE, authInstance, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
1043
+ const requestWithRecaptchaV2 = await injectRecaptchaV2Token(authInstance, request, verifier);
1044
+ return sendPhoneVerificationCode(authInstance, requestWithRecaptchaV2);
1045
+ }
1046
+ return sendPhoneVerificationCode(authInstance, request);
1047
+ };
1048
+ const sendPhoneVerificationCodeResponse = handleRecaptchaFlow(auth, sendPhoneVerificationCodeRequest, "sendVerificationCode" /* RecaptchaActionName.SEND_VERIFICATION_CODE */, sendPhoneVerificationCodeActionCallback, "PHONE_PROVIDER" /* RecaptchaAuthProvider.PHONE_PROVIDER */);
1049
+ const response = await sendPhoneVerificationCodeResponse.catch(error => {
1050
+ return Promise.reject(error);
1051
+ });
1052
+ return response.sessionInfo;
1053
+ }
1054
+ }
1055
+ finally {
1056
+ verifier?._reset();
1057
+ }
1058
+ }
1059
+ /**
1060
+ * Updates the user's phone number.
1061
+ *
1062
+ * @remarks
1063
+ * This method does not work in a Node.js environment or on any {@link User} signed in by
1064
+ * {@link Auth} instances created with a {@link @firebase/app#FirebaseServerApp}.
1065
+ *
1066
+ * @example
1067
+ * ```
1068
+ * // 'recaptcha-container' is the ID of an element in the DOM.
1069
+ * const applicationVerifier = new RecaptchaVerifier('recaptcha-container');
1070
+ * const provider = new PhoneAuthProvider(auth);
1071
+ * const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);
1072
+ * // Obtain the verificationCode from the user.
1073
+ * const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
1074
+ * await updatePhoneNumber(user, phoneCredential);
1075
+ * ```
1076
+ *
1077
+ * @param user - The user.
1078
+ * @param credential - A credential authenticating the new phone number.
1079
+ *
1080
+ * @public
1081
+ */
1082
+ async function updatePhoneNumber(user, credential) {
1083
+ const userInternal = getModularInstance(user);
1084
+ if (_isFirebaseServerApp(userInternal.auth.app)) {
1085
+ return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(userInternal.auth));
1086
+ }
1087
+ await _link$1(userInternal, credential);
1088
+ }
1089
+ // Helper function that fetches and injects a reCAPTCHA v2 token into the request.
1090
+ async function injectRecaptchaV2Token(auth, request, recaptchaV2Verifier) {
1091
+ _assert(recaptchaV2Verifier.type === RECAPTCHA_VERIFIER_TYPE, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
1092
+ const recaptchaV2Token = await recaptchaV2Verifier.verify();
1093
+ _assert(typeof recaptchaV2Token === 'string', auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
1094
+ const newRequest = { ...request };
1095
+ if ('phoneEnrollmentInfo' in newRequest) {
1096
+ const phoneNumber = newRequest.phoneEnrollmentInfo.phoneNumber;
1097
+ const captchaResponse = newRequest.phoneEnrollmentInfo.captchaResponse;
1098
+ const clientType = newRequest
1099
+ .phoneEnrollmentInfo.clientType;
1100
+ const recaptchaVersion = newRequest.phoneEnrollmentInfo.recaptchaVersion;
1101
+ Object.assign(newRequest, {
1102
+ 'phoneEnrollmentInfo': {
1103
+ phoneNumber,
1104
+ recaptchaToken: recaptchaV2Token,
1105
+ captchaResponse,
1106
+ clientType,
1107
+ recaptchaVersion
1108
+ }
1109
+ });
1110
+ return newRequest;
1111
+ }
1112
+ else if ('phoneSignInInfo' in newRequest) {
1113
+ const captchaResponse = newRequest.phoneSignInInfo.captchaResponse;
1114
+ const clientType = newRequest
1115
+ .phoneSignInInfo.clientType;
1116
+ const recaptchaVersion = newRequest.phoneSignInInfo.recaptchaVersion;
1117
+ Object.assign(newRequest, {
1118
+ 'phoneSignInInfo': {
1119
+ recaptchaToken: recaptchaV2Token,
1120
+ captchaResponse,
1121
+ clientType,
1122
+ recaptchaVersion
1123
+ }
1124
+ });
1125
+ return newRequest;
1126
+ }
1127
+ else {
1128
+ Object.assign(newRequest, { 'recaptchaToken': recaptchaV2Token });
1129
+ return newRequest;
1130
+ }
1131
+ }
1132
+
1133
+ /**
1134
+ * @license
1135
+ * Copyright 2020 Google LLC
1136
+ *
1137
+ * Licensed under the Apache License, Version 2.0 (the "License");
1138
+ * you may not use this file except in compliance with the License.
1139
+ * You may obtain a copy of the License at
1140
+ *
1141
+ * http://www.apache.org/licenses/LICENSE-2.0
1142
+ *
1143
+ * Unless required by applicable law or agreed to in writing, software
1144
+ * distributed under the License is distributed on an "AS IS" BASIS,
1145
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1146
+ * See the License for the specific language governing permissions and
1147
+ * limitations under the License.
1148
+ */
1149
+ /**
1150
+ * Provider for generating an {@link PhoneAuthCredential}.
1151
+ *
1152
+ * @remarks
1153
+ * `PhoneAuthProvider` does not work in a Node.js environment.
1154
+ *
1155
+ * @example
1156
+ * ```javascript
1157
+ * // 'recaptcha-container' is the ID of an element in the DOM.
1158
+ * const applicationVerifier = new RecaptchaVerifier('recaptcha-container');
1159
+ * const provider = new PhoneAuthProvider(auth);
1160
+ * const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);
1161
+ * // Obtain the verificationCode from the user.
1162
+ * const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
1163
+ * const userCredential = await signInWithCredential(auth, phoneCredential);
1164
+ * ```
1165
+ *
1166
+ * @public
1167
+ */
1168
+ class PhoneAuthProvider {
1169
+ /**
1170
+ * @param auth - The Firebase {@link Auth} instance in which sign-ins should occur.
1171
+ *
1172
+ */
1173
+ constructor(auth) {
1174
+ /** Always set to {@link ProviderId}.PHONE. */
1175
+ this.providerId = PhoneAuthProvider.PROVIDER_ID;
1176
+ this.auth = _castAuth(auth);
1177
+ }
1178
+ /**
1179
+ *
1180
+ * Starts a phone number authentication flow by sending a verification code to the given phone
1181
+ * number.
1182
+ *
1183
+ * @example
1184
+ * ```javascript
1185
+ * const provider = new PhoneAuthProvider(auth);
1186
+ * const verificationId = await provider.verifyPhoneNumber(phoneNumber, applicationVerifier);
1187
+ * // Obtain verificationCode from the user.
1188
+ * const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
1189
+ * const userCredential = await signInWithCredential(auth, authCredential);
1190
+ * ```
1191
+ *
1192
+ * @example
1193
+ * An alternative flow is provided using the `signInWithPhoneNumber` method.
1194
+ * ```javascript
1195
+ * const confirmationResult = signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);
1196
+ * // Obtain verificationCode from the user.
1197
+ * const userCredential = confirmationResult.confirm(verificationCode);
1198
+ * ```
1199
+ *
1200
+ * @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in
1201
+ * E.164 format (e.g. +16505550101).
1202
+ * @param applicationVerifier - An {@link ApplicationVerifier}, which prevents
1203
+ * requests from unauthorized clients. This SDK includes an implementation
1204
+ * based on reCAPTCHA v2, {@link RecaptchaVerifier}. If you've enabled
1205
+ * reCAPTCHA Enterprise bot protection in Enforce mode, this parameter is
1206
+ * optional; in all other configurations, the parameter is required.
1207
+ *
1208
+ * @returns A Promise for a verification ID that can be passed to
1209
+ * {@link PhoneAuthProvider.credential} to identify this flow.
1210
+ */
1211
+ verifyPhoneNumber(phoneOptions, applicationVerifier) {
1212
+ return _verifyPhoneNumber(this.auth, phoneOptions, getModularInstance(applicationVerifier));
1213
+ }
1214
+ /**
1215
+ * Creates a phone auth credential, given the verification ID from
1216
+ * {@link PhoneAuthProvider.verifyPhoneNumber} and the code that was sent to the user's
1217
+ * mobile device.
1218
+ *
1219
+ * @example
1220
+ * ```javascript
1221
+ * const provider = new PhoneAuthProvider(auth);
1222
+ * const verificationId = provider.verifyPhoneNumber(phoneNumber, applicationVerifier);
1223
+ * // Obtain verificationCode from the user.
1224
+ * const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
1225
+ * const userCredential = signInWithCredential(auth, authCredential);
1226
+ * ```
1227
+ *
1228
+ * @example
1229
+ * An alternative flow is provided using the `signInWithPhoneNumber` method.
1230
+ * ```javascript
1231
+ * const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);
1232
+ * // Obtain verificationCode from the user.
1233
+ * const userCredential = await confirmationResult.confirm(verificationCode);
1234
+ * ```
1235
+ *
1236
+ * @param verificationId - The verification ID returned from {@link PhoneAuthProvider.verifyPhoneNumber}.
1237
+ * @param verificationCode - The verification code sent to the user's mobile device.
1238
+ *
1239
+ * @returns The auth provider credential.
1240
+ */
1241
+ static credential(verificationId, verificationCode) {
1242
+ return PhoneAuthCredential._fromVerification(verificationId, verificationCode);
1243
+ }
1244
+ /**
1245
+ * Generates an {@link AuthCredential} from a {@link UserCredential}.
1246
+ * @param userCredential - The user credential.
1247
+ */
1248
+ static credentialFromResult(userCredential) {
1249
+ const credential = userCredential;
1250
+ return PhoneAuthProvider.credentialFromTaggedObject(credential);
1251
+ }
1252
+ /**
1253
+ * Returns an {@link AuthCredential} when passed an error.
1254
+ *
1255
+ * @remarks
1256
+ *
1257
+ * This method works for errors like
1258
+ * `auth/account-exists-with-different-credentials`. This is useful for
1259
+ * recovering when attempting to set a user's phone number but the number
1260
+ * in question is already tied to another account. For example, the following
1261
+ * code tries to update the current user's phone number, and if that
1262
+ * fails, links the user with the account associated with that number:
1263
+ *
1264
+ * ```js
1265
+ * const provider = new PhoneAuthProvider(auth);
1266
+ * const verificationId = await provider.verifyPhoneNumber(number, verifier);
1267
+ * try {
1268
+ * const code = ''; // Prompt the user for the verification code
1269
+ * await updatePhoneNumber(
1270
+ * auth.currentUser,
1271
+ * PhoneAuthProvider.credential(verificationId, code));
1272
+ * } catch (e) {
1273
+ * if ((e as FirebaseError)?.code === 'auth/account-exists-with-different-credential') {
1274
+ * const cred = PhoneAuthProvider.credentialFromError(e);
1275
+ * await linkWithCredential(auth.currentUser, cred);
1276
+ * }
1277
+ * }
1278
+ *
1279
+ * // At this point, auth.currentUser.phoneNumber === number.
1280
+ * ```
1281
+ *
1282
+ * @param error - The error to generate a credential from.
1283
+ */
1284
+ static credentialFromError(error) {
1285
+ return PhoneAuthProvider.credentialFromTaggedObject((error.customData || {}));
1286
+ }
1287
+ static credentialFromTaggedObject({ _tokenResponse: tokenResponse }) {
1288
+ if (!tokenResponse) {
1289
+ return null;
1290
+ }
1291
+ const { phoneNumber, temporaryProof } = tokenResponse;
1292
+ if (phoneNumber && temporaryProof) {
1293
+ return PhoneAuthCredential._fromTokenResponse(phoneNumber, temporaryProof);
1294
+ }
1295
+ return null;
1296
+ }
1297
+ }
1298
+ /** Always set to {@link ProviderId}.PHONE. */
1299
+ PhoneAuthProvider.PROVIDER_ID = "phone" /* ProviderId.PHONE */;
1300
+ /** Always set to {@link SignInMethod}.PHONE. */
1301
+ PhoneAuthProvider.PHONE_SIGN_IN_METHOD = "phone" /* SignInMethod.PHONE */;
1302
+
1303
+ /**
1304
+ * @license
1305
+ * Copyright 2021 Google LLC
1306
+ *
1307
+ * Licensed under the Apache License, Version 2.0 (the "License");
1308
+ * you may not use this file except in compliance with the License.
1309
+ * You may obtain a copy of the License at
1310
+ *
1311
+ * http://www.apache.org/licenses/LICENSE-2.0
1312
+ *
1313
+ * Unless required by applicable law or agreed to in writing, software
1314
+ * distributed under the License is distributed on an "AS IS" BASIS,
1315
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1316
+ * See the License for the specific language governing permissions and
1317
+ * limitations under the License.
1318
+ */
1319
+ /**
1320
+ * Chooses a popup/redirect resolver to use. This prefers the override (which
1321
+ * is directly passed in), and falls back to the property set on the auth
1322
+ * object. If neither are available, this function errors w/ an argument error.
1323
+ */
1324
+ function _withDefaultResolver(auth, resolverOverride) {
1325
+ if (resolverOverride) {
1326
+ return _getInstance(resolverOverride);
1327
+ }
1328
+ _assert(auth._popupRedirectResolver, auth, "argument-error" /* AuthErrorCode.ARGUMENT_ERROR */);
1329
+ return auth._popupRedirectResolver;
1330
+ }
1331
+
1332
+ /**
1333
+ * @license
1334
+ * Copyright 2019 Google LLC
1335
+ *
1336
+ * Licensed under the Apache License, Version 2.0 (the "License");
1337
+ * you may not use this file except in compliance with the License.
1338
+ * You may obtain a copy of the License at
1339
+ *
1340
+ * http://www.apache.org/licenses/LICENSE-2.0
1341
+ *
1342
+ * Unless required by applicable law or agreed to in writing, software
1343
+ * distributed under the License is distributed on an "AS IS" BASIS,
1344
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1345
+ * See the License for the specific language governing permissions and
1346
+ * limitations under the License.
1347
+ */
1348
+ class IdpCredential extends AuthCredential {
1349
+ constructor(params) {
1350
+ super("custom" /* ProviderId.CUSTOM */, "custom" /* ProviderId.CUSTOM */);
1351
+ this.params = params;
1352
+ }
1353
+ _getIdTokenResponse(auth) {
1354
+ return signInWithIdp(auth, this._buildIdpRequest());
1355
+ }
1356
+ _linkToIdToken(auth, idToken) {
1357
+ return signInWithIdp(auth, this._buildIdpRequest(idToken));
1358
+ }
1359
+ _getReauthenticationResolver(auth) {
1360
+ return signInWithIdp(auth, this._buildIdpRequest());
1361
+ }
1362
+ _buildIdpRequest(idToken) {
1363
+ const request = {
1364
+ requestUri: this.params.requestUri,
1365
+ sessionId: this.params.sessionId,
1366
+ postBody: this.params.postBody,
1367
+ tenantId: this.params.tenantId,
1368
+ pendingToken: this.params.pendingToken,
1369
+ returnSecureToken: true,
1370
+ returnIdpCredential: true
1371
+ };
1372
+ if (idToken) {
1373
+ request.idToken = idToken;
1374
+ }
1375
+ return request;
1376
+ }
1377
+ }
1378
+ function _signIn(params) {
1379
+ return _signInWithCredential(params.auth, new IdpCredential(params), params.bypassAuthState);
1380
+ }
1381
+ function _reauth(params) {
1382
+ const { auth, user } = params;
1383
+ _assert(user, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
1384
+ return _reauthenticate(user, new IdpCredential(params), params.bypassAuthState);
1385
+ }
1386
+ async function _link(params) {
1387
+ const { auth, user } = params;
1388
+ _assert(user, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
1389
+ return _link$1(user, new IdpCredential(params), params.bypassAuthState);
1390
+ }
1391
+
1392
+ /**
1393
+ * @license
1394
+ * Copyright 2020 Google LLC
1395
+ *
1396
+ * Licensed under the Apache License, Version 2.0 (the "License");
1397
+ * you may not use this file except in compliance with the License.
1398
+ * You may obtain a copy of the License at
1399
+ *
1400
+ * http://www.apache.org/licenses/LICENSE-2.0
1401
+ *
1402
+ * Unless required by applicable law or agreed to in writing, software
1403
+ * distributed under the License is distributed on an "AS IS" BASIS,
1404
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1405
+ * See the License for the specific language governing permissions and
1406
+ * limitations under the License.
1407
+ */
1408
+ /**
1409
+ * Popup event manager. Handles the popup's entire lifecycle; listens to auth
1410
+ * events
1411
+ */
1412
+ class AbstractPopupRedirectOperation {
1413
+ constructor(auth, filter, resolver, user, bypassAuthState = false) {
1414
+ this.auth = auth;
1415
+ this.resolver = resolver;
1416
+ this.user = user;
1417
+ this.bypassAuthState = bypassAuthState;
1418
+ this.pendingPromise = null;
1419
+ this.eventManager = null;
1420
+ this.filter = Array.isArray(filter) ? filter : [filter];
1421
+ }
1422
+ execute() {
1423
+ return new Promise(async (resolve, reject) => {
1424
+ this.pendingPromise = { resolve, reject };
1425
+ try {
1426
+ this.eventManager = await this.resolver._initialize(this.auth);
1427
+ await this.onExecution();
1428
+ this.eventManager.registerConsumer(this);
1429
+ }
1430
+ catch (e) {
1431
+ this.reject(e);
1432
+ }
1433
+ });
1434
+ }
1435
+ async onAuthEvent(event) {
1436
+ const { urlResponse, sessionId, postBody, tenantId, error, type } = event;
1437
+ if (error) {
1438
+ this.reject(error);
1439
+ return;
1440
+ }
1441
+ const params = {
1442
+ auth: this.auth,
1443
+ requestUri: urlResponse,
1444
+ sessionId: sessionId,
1445
+ tenantId: tenantId || undefined,
1446
+ postBody: postBody || undefined,
1447
+ user: this.user,
1448
+ bypassAuthState: this.bypassAuthState
1449
+ };
1450
+ try {
1451
+ this.resolve(await this.getIdpTask(type)(params));
1452
+ }
1453
+ catch (e) {
1454
+ this.reject(e);
1455
+ }
1456
+ }
1457
+ onError(error) {
1458
+ this.reject(error);
1459
+ }
1460
+ getIdpTask(type) {
1461
+ switch (type) {
1462
+ case "signInViaPopup" /* AuthEventType.SIGN_IN_VIA_POPUP */:
1463
+ case "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */:
1464
+ return _signIn;
1465
+ case "linkViaPopup" /* AuthEventType.LINK_VIA_POPUP */:
1466
+ case "linkViaRedirect" /* AuthEventType.LINK_VIA_REDIRECT */:
1467
+ return _link;
1468
+ case "reauthViaPopup" /* AuthEventType.REAUTH_VIA_POPUP */:
1469
+ case "reauthViaRedirect" /* AuthEventType.REAUTH_VIA_REDIRECT */:
1470
+ return _reauth;
1471
+ default:
1472
+ _fail(this.auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
1473
+ }
1474
+ }
1475
+ resolve(cred) {
1476
+ debugAssert(this.pendingPromise, 'Pending promise was never set');
1477
+ this.pendingPromise.resolve(cred);
1478
+ this.unregisterAndCleanUp();
1479
+ }
1480
+ reject(error) {
1481
+ debugAssert(this.pendingPromise, 'Pending promise was never set');
1482
+ this.pendingPromise.reject(error);
1483
+ this.unregisterAndCleanUp();
1484
+ }
1485
+ unregisterAndCleanUp() {
1486
+ if (this.eventManager) {
1487
+ this.eventManager.unregisterConsumer(this);
1488
+ }
1489
+ this.pendingPromise = null;
1490
+ this.cleanUp();
1491
+ }
1492
+ }
1493
+
1494
+ /**
1495
+ * @license
1496
+ * Copyright 2020 Google LLC
1497
+ *
1498
+ * Licensed under the Apache License, Version 2.0 (the "License");
1499
+ * you may not use this file except in compliance with the License.
1500
+ * You may obtain a copy of the License at
1501
+ *
1502
+ * http://www.apache.org/licenses/LICENSE-2.0
1503
+ *
1504
+ * Unless required by applicable law or agreed to in writing, software
1505
+ * distributed under the License is distributed on an "AS IS" BASIS,
1506
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1507
+ * See the License for the specific language governing permissions and
1508
+ * limitations under the License.
1509
+ */
1510
+ const _POLL_WINDOW_CLOSE_TIMEOUT = new Delay(2000, 10000);
1511
+ /**
1512
+ * Authenticates a Firebase client using a popup-based OAuth authentication flow.
1513
+ *
1514
+ * @remarks
1515
+ * If succeeds, returns the signed in user along with the provider's credential. If sign in was
1516
+ * unsuccessful, returns an error object containing additional information about the error.
1517
+ *
1518
+ * This method does not work in a Node.js environment or with {@link Auth} instances created with a
1519
+ * {@link @firebase/app#FirebaseServerApp}.
1520
+ *
1521
+ * @example
1522
+ * ```javascript
1523
+ * // Sign in using a popup.
1524
+ * const provider = new FacebookAuthProvider();
1525
+ * const result = await signInWithPopup(auth, provider);
1526
+ *
1527
+ * // The signed-in user info.
1528
+ * const user = result.user;
1529
+ * // This gives you a Facebook Access Token.
1530
+ * const credential = provider.credentialFromResult(auth, result);
1531
+ * const token = credential.accessToken;
1532
+ * ```
1533
+ *
1534
+ * @param auth - The {@link Auth} instance.
1535
+ * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.
1536
+ * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.
1537
+ * @param resolver - An instance of {@link PopupRedirectResolver}, optional
1538
+ * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.
1539
+ *
1540
+ * @public
1541
+ */
1542
+ async function signInWithPopup(auth, provider, resolver) {
1543
+ if (_isFirebaseServerApp(auth.app)) {
1544
+ return Promise.reject(_createError(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */));
1545
+ }
1546
+ const authInternal = _castAuth(auth);
1547
+ _assertInstanceOf(auth, provider, FederatedAuthProvider);
1548
+ const resolverInternal = _withDefaultResolver(authInternal, resolver);
1549
+ const action = new PopupOperation(authInternal, "signInViaPopup" /* AuthEventType.SIGN_IN_VIA_POPUP */, provider, resolverInternal);
1550
+ return action.executeNotNull();
1551
+ }
1552
+ /**
1553
+ * Reauthenticates the current user with the specified {@link OAuthProvider} using a pop-up based
1554
+ * OAuth flow.
1555
+ *
1556
+ * @remarks
1557
+ * If the reauthentication is successful, the returned result will contain the user and the
1558
+ * provider's credential.
1559
+ *
1560
+ * This method does not work in a Node.js environment or on any {@link User} signed in by
1561
+ * {@link Auth} instances created with a {@link @firebase/app#FirebaseServerApp}.
1562
+ *
1563
+ * @example
1564
+ * ```javascript
1565
+ * // Sign in using a popup.
1566
+ * const provider = new FacebookAuthProvider();
1567
+ * const result = await signInWithPopup(auth, provider);
1568
+ * // Reauthenticate using a popup.
1569
+ * await reauthenticateWithPopup(result.user, provider);
1570
+ * ```
1571
+ *
1572
+ * @param user - The user.
1573
+ * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.
1574
+ * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.
1575
+ * @param resolver - An instance of {@link PopupRedirectResolver}, optional
1576
+ * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.
1577
+ *
1578
+ * @public
1579
+ */
1580
+ async function reauthenticateWithPopup(user, provider, resolver) {
1581
+ const userInternal = getModularInstance(user);
1582
+ if (_isFirebaseServerApp(userInternal.auth.app)) {
1583
+ return Promise.reject(_createError(userInternal.auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */));
1584
+ }
1585
+ _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);
1586
+ const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);
1587
+ const action = new PopupOperation(userInternal.auth, "reauthViaPopup" /* AuthEventType.REAUTH_VIA_POPUP */, provider, resolverInternal, userInternal);
1588
+ return action.executeNotNull();
1589
+ }
1590
+ /**
1591
+ * Links the authenticated provider to the user account using a pop-up based OAuth flow.
1592
+ *
1593
+ * @remarks
1594
+ * If the linking is successful, the returned result will contain the user and the provider's credential.
1595
+ *
1596
+ * This method does not work in a Node.js environment.
1597
+ *
1598
+ * @example
1599
+ * ```javascript
1600
+ * // Sign in using some other provider.
1601
+ * const result = await signInWithEmailAndPassword(auth, email, password);
1602
+ * // Link using a popup.
1603
+ * const provider = new FacebookAuthProvider();
1604
+ * await linkWithPopup(result.user, provider);
1605
+ * ```
1606
+ *
1607
+ * @param user - The user.
1608
+ * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.
1609
+ * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.
1610
+ * @param resolver - An instance of {@link PopupRedirectResolver}, optional
1611
+ * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.
1612
+ *
1613
+ * @public
1614
+ */
1615
+ async function linkWithPopup(user, provider, resolver) {
1616
+ const userInternal = getModularInstance(user);
1617
+ _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);
1618
+ const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);
1619
+ const action = new PopupOperation(userInternal.auth, "linkViaPopup" /* AuthEventType.LINK_VIA_POPUP */, provider, resolverInternal, userInternal);
1620
+ return action.executeNotNull();
1621
+ }
1622
+ /**
1623
+ * Popup event manager. Handles the popup's entire lifecycle; listens to auth
1624
+ * events
1625
+ *
1626
+ */
1627
+ class PopupOperation extends AbstractPopupRedirectOperation {
1628
+ constructor(auth, filter, provider, resolver, user) {
1629
+ super(auth, filter, resolver, user);
1630
+ this.provider = provider;
1631
+ this.authWindow = null;
1632
+ this.pollId = null;
1633
+ if (PopupOperation.currentPopupAction) {
1634
+ PopupOperation.currentPopupAction.cancel();
1635
+ }
1636
+ PopupOperation.currentPopupAction = this;
1637
+ }
1638
+ async executeNotNull() {
1639
+ const result = await this.execute();
1640
+ _assert(result, this.auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
1641
+ return result;
1642
+ }
1643
+ async onExecution() {
1644
+ debugAssert(this.filter.length === 1, 'Popup operations only handle one event');
1645
+ const eventId = _generateEventId();
1646
+ this.authWindow = await this.resolver._openPopup(this.auth, this.provider, this.filter[0], // There's always one, see constructor
1647
+ eventId);
1648
+ this.authWindow.associatedEvent = eventId;
1649
+ // Check for web storage support and origin validation _after_ the popup is
1650
+ // loaded. These operations are slow (~1 second or so) Rather than
1651
+ // waiting on them before opening the window, optimistically open the popup
1652
+ // and check for storage support at the same time. If storage support is
1653
+ // not available, this will cause the whole thing to reject properly. It
1654
+ // will also close the popup, but since the promise has already rejected,
1655
+ // the popup closed by user poll will reject into the void.
1656
+ this.resolver._originValidation(this.auth).catch(e => {
1657
+ this.reject(e);
1658
+ });
1659
+ this.resolver._isIframeWebStorageSupported(this.auth, isSupported => {
1660
+ if (!isSupported) {
1661
+ this.reject(_createError(this.auth, "web-storage-unsupported" /* AuthErrorCode.WEB_STORAGE_UNSUPPORTED */));
1662
+ }
1663
+ });
1664
+ // Handle user closure. Notice this does *not* use await
1665
+ this.pollUserCancellation();
1666
+ }
1667
+ get eventId() {
1668
+ return this.authWindow?.associatedEvent || null;
1669
+ }
1670
+ cancel() {
1671
+ this.reject(_createError(this.auth, "cancelled-popup-request" /* AuthErrorCode.EXPIRED_POPUP_REQUEST */));
1672
+ }
1673
+ cleanUp() {
1674
+ if (this.authWindow) {
1675
+ this.authWindow.close();
1676
+ }
1677
+ if (this.pollId) {
1678
+ window.clearTimeout(this.pollId);
1679
+ }
1680
+ this.authWindow = null;
1681
+ this.pollId = null;
1682
+ PopupOperation.currentPopupAction = null;
1683
+ }
1684
+ pollUserCancellation() {
1685
+ const poll = () => {
1686
+ if (this.authWindow?.window?.closed) {
1687
+ // Make sure that there is sufficient time for whatever action to
1688
+ // complete. The window could have closed but the sign in network
1689
+ // call could still be in flight. This is specifically true for
1690
+ // Firefox or if the opener is in an iframe, in which case the oauth
1691
+ // helper closes the popup.
1692
+ this.pollId = window.setTimeout(() => {
1693
+ this.pollId = null;
1694
+ this.reject(_createError(this.auth, "popup-closed-by-user" /* AuthErrorCode.POPUP_CLOSED_BY_USER */));
1695
+ }, 8000 /* _Timeout.AUTH_EVENT */);
1696
+ return;
1697
+ }
1698
+ this.pollId = window.setTimeout(poll, _POLL_WINDOW_CLOSE_TIMEOUT.get());
1699
+ };
1700
+ poll();
1701
+ }
1702
+ }
1703
+ // Only one popup is ever shown at once. The lifecycle of the current popup
1704
+ // can be managed / cancelled by the constructor.
1705
+ PopupOperation.currentPopupAction = null;
1706
+
1707
+ /**
1708
+ * @license
1709
+ * Copyright 2020 Google LLC
1710
+ *
1711
+ * Licensed under the Apache License, Version 2.0 (the "License");
1712
+ * you may not use this file except in compliance with the License.
1713
+ * You may obtain a copy of the License at
1714
+ *
1715
+ * http://www.apache.org/licenses/LICENSE-2.0
1716
+ *
1717
+ * Unless required by applicable law or agreed to in writing, software
1718
+ * distributed under the License is distributed on an "AS IS" BASIS,
1719
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1720
+ * See the License for the specific language governing permissions and
1721
+ * limitations under the License.
1722
+ */
1723
+ const PENDING_REDIRECT_KEY = 'pendingRedirect';
1724
+ // We only get one redirect outcome for any one auth, so just store it
1725
+ // in here.
1726
+ const redirectOutcomeMap = new Map();
1727
+ class RedirectAction extends AbstractPopupRedirectOperation {
1728
+ constructor(auth, resolver, bypassAuthState = false) {
1729
+ super(auth, [
1730
+ "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */,
1731
+ "linkViaRedirect" /* AuthEventType.LINK_VIA_REDIRECT */,
1732
+ "reauthViaRedirect" /* AuthEventType.REAUTH_VIA_REDIRECT */,
1733
+ "unknown" /* AuthEventType.UNKNOWN */
1734
+ ], resolver, undefined, bypassAuthState);
1735
+ this.eventId = null;
1736
+ }
1737
+ /**
1738
+ * Override the execute function; if we already have a redirect result, then
1739
+ * just return it.
1740
+ */
1741
+ async execute() {
1742
+ let readyOutcome = redirectOutcomeMap.get(this.auth._key());
1743
+ if (!readyOutcome) {
1744
+ try {
1745
+ const hasPendingRedirect = await _getAndClearPendingRedirectStatus(this.resolver, this.auth);
1746
+ const result = hasPendingRedirect ? await super.execute() : null;
1747
+ readyOutcome = () => Promise.resolve(result);
1748
+ }
1749
+ catch (e) {
1750
+ readyOutcome = () => Promise.reject(e);
1751
+ }
1752
+ redirectOutcomeMap.set(this.auth._key(), readyOutcome);
1753
+ }
1754
+ // If we're not bypassing auth state, the ready outcome should be set to
1755
+ // null.
1756
+ if (!this.bypassAuthState) {
1757
+ redirectOutcomeMap.set(this.auth._key(), () => Promise.resolve(null));
1758
+ }
1759
+ return readyOutcome();
1760
+ }
1761
+ async onAuthEvent(event) {
1762
+ if (event.type === "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */) {
1763
+ return super.onAuthEvent(event);
1764
+ }
1765
+ else if (event.type === "unknown" /* AuthEventType.UNKNOWN */) {
1766
+ // This is a sentinel value indicating there's no pending redirect
1767
+ this.resolve(null);
1768
+ return;
1769
+ }
1770
+ if (event.eventId) {
1771
+ const user = await this.auth._redirectUserForId(event.eventId);
1772
+ if (user) {
1773
+ this.user = user;
1774
+ return super.onAuthEvent(event);
1775
+ }
1776
+ else {
1777
+ this.resolve(null);
1778
+ }
1779
+ }
1780
+ }
1781
+ async onExecution() { }
1782
+ cleanUp() { }
1783
+ }
1784
+ async function _getAndClearPendingRedirectStatus(resolver, auth) {
1785
+ const key = pendingRedirectKey(auth);
1786
+ const persistence = resolverPersistence(resolver);
1787
+ if (!(await persistence._isAvailable())) {
1788
+ return false;
1789
+ }
1790
+ const hasPendingRedirect = (await persistence._get(key)) === 'true';
1791
+ await persistence._remove(key);
1792
+ return hasPendingRedirect;
1793
+ }
1794
+ async function _setPendingRedirectStatus(resolver, auth) {
1795
+ return resolverPersistence(resolver)._set(pendingRedirectKey(auth), 'true');
1796
+ }
1797
+ function _clearRedirectOutcomes() {
1798
+ redirectOutcomeMap.clear();
1799
+ }
1800
+ function _overrideRedirectResult(auth, result) {
1801
+ redirectOutcomeMap.set(auth._key(), result);
1802
+ }
1803
+ function resolverPersistence(resolver) {
1804
+ return _getInstance(resolver._redirectPersistence);
1805
+ }
1806
+ function pendingRedirectKey(auth) {
1807
+ return _persistenceKeyName(PENDING_REDIRECT_KEY, auth.config.apiKey, auth.name);
1808
+ }
1809
+
1810
+ /**
1811
+ * @license
1812
+ * Copyright 2020 Google LLC
1813
+ *
1814
+ * Licensed under the Apache License, Version 2.0 (the "License");
1815
+ * you may not use this file except in compliance with the License.
1816
+ * You may obtain a copy of the License at
1817
+ *
1818
+ * http://www.apache.org/licenses/LICENSE-2.0
1819
+ *
1820
+ * Unless required by applicable law or agreed to in writing, software
1821
+ * distributed under the License is distributed on an "AS IS" BASIS,
1822
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1823
+ * See the License for the specific language governing permissions and
1824
+ * limitations under the License.
1825
+ */
1826
+ /**
1827
+ * Authenticates a Firebase client using a full-page redirect flow.
1828
+ *
1829
+ * @remarks
1830
+ * To handle the results and errors for this operation, refer to {@link getRedirectResult}.
1831
+ * Follow the {@link https://firebase.google.com/docs/auth/web/redirect-best-practices
1832
+ * | best practices} when using {@link signInWithRedirect}.
1833
+ *
1834
+ * This method does not work in a Node.js environment or with {@link Auth} instances created with a
1835
+ * {@link @firebase/app#FirebaseServerApp}.
1836
+ *
1837
+ * @example
1838
+ * ```javascript
1839
+ * // Sign in using a redirect.
1840
+ * const provider = new FacebookAuthProvider();
1841
+ * // You can add additional scopes to the provider:
1842
+ * provider.addScope('user_birthday');
1843
+ * // Start a sign in process for an unauthenticated user.
1844
+ * await signInWithRedirect(auth, provider);
1845
+ * // This will trigger a full page redirect away from your app
1846
+ *
1847
+ * // After returning from the redirect when your app initializes you can obtain the result
1848
+ * const result = await getRedirectResult(auth);
1849
+ * if (result) {
1850
+ * // This is the signed-in user
1851
+ * const user = result.user;
1852
+ * // This gives you a Facebook Access Token.
1853
+ * const credential = provider.credentialFromResult(auth, result);
1854
+ * const token = credential.accessToken;
1855
+ * }
1856
+ * // As this API can be used for sign-in, linking and reauthentication,
1857
+ * // check the operationType to determine what triggered this redirect
1858
+ * // operation.
1859
+ * const operationType = result.operationType;
1860
+ * ```
1861
+ *
1862
+ * @param auth - The {@link Auth} instance.
1863
+ * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.
1864
+ * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.
1865
+ * @param resolver - An instance of {@link PopupRedirectResolver}, optional
1866
+ * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.
1867
+ *
1868
+ * @public
1869
+ */
1870
+ function signInWithRedirect(auth, provider, resolver) {
1871
+ return _signInWithRedirect(auth, provider, resolver);
1872
+ }
1873
+ async function _signInWithRedirect(auth, provider, resolver) {
1874
+ if (_isFirebaseServerApp(auth.app)) {
1875
+ return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(auth));
1876
+ }
1877
+ const authInternal = _castAuth(auth);
1878
+ _assertInstanceOf(auth, provider, FederatedAuthProvider);
1879
+ // Wait for auth initialization to complete, this will process pending redirects and clear the
1880
+ // PENDING_REDIRECT_KEY in persistence. This should be completed before starting a new
1881
+ // redirect and creating a PENDING_REDIRECT_KEY entry.
1882
+ await authInternal._initializationPromise;
1883
+ const resolverInternal = _withDefaultResolver(authInternal, resolver);
1884
+ await _setPendingRedirectStatus(resolverInternal, authInternal);
1885
+ return resolverInternal._openRedirect(authInternal, provider, "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */);
1886
+ }
1887
+ /**
1888
+ * Reauthenticates the current user with the specified {@link OAuthProvider} using a full-page redirect flow.
1889
+ * @remarks
1890
+ * To handle the results and errors for this operation, refer to {@link getRedirectResult}.
1891
+ * Follow the {@link https://firebase.google.com/docs/auth/web/redirect-best-practices
1892
+ * | best practices} when using {@link reauthenticateWithRedirect}.
1893
+ *
1894
+ * This method does not work in a Node.js environment or with {@link Auth} instances
1895
+ * created with a {@link @firebase/app#FirebaseServerApp}.
1896
+ *
1897
+ * @example
1898
+ * ```javascript
1899
+ * // Sign in using a redirect.
1900
+ * const provider = new FacebookAuthProvider();
1901
+ * const result = await signInWithRedirect(auth, provider);
1902
+ * // This will trigger a full page redirect away from your app
1903
+ *
1904
+ * // After returning from the redirect when your app initializes you can obtain the result
1905
+ * const result = await getRedirectResult(auth);
1906
+ * // Reauthenticate using a redirect.
1907
+ * await reauthenticateWithRedirect(result.user, provider);
1908
+ * // This will again trigger a full page redirect away from your app
1909
+ *
1910
+ * // After returning from the redirect when your app initializes you can obtain the result
1911
+ * const result = await getRedirectResult(auth);
1912
+ * ```
1913
+ *
1914
+ * @param user - The user.
1915
+ * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.
1916
+ * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.
1917
+ * @param resolver - An instance of {@link PopupRedirectResolver}, optional
1918
+ * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.
1919
+ *
1920
+ * @public
1921
+ */
1922
+ function reauthenticateWithRedirect(user, provider, resolver) {
1923
+ return _reauthenticateWithRedirect(user, provider, resolver);
1924
+ }
1925
+ async function _reauthenticateWithRedirect(user, provider, resolver) {
1926
+ const userInternal = getModularInstance(user);
1927
+ _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);
1928
+ if (_isFirebaseServerApp(userInternal.auth.app)) {
1929
+ return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(userInternal.auth));
1930
+ }
1931
+ // Wait for auth initialization to complete, this will process pending redirects and clear the
1932
+ // PENDING_REDIRECT_KEY in persistence. This should be completed before starting a new
1933
+ // redirect and creating a PENDING_REDIRECT_KEY entry.
1934
+ await userInternal.auth._initializationPromise;
1935
+ // Allow the resolver to error before persisting the redirect user
1936
+ const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);
1937
+ await _setPendingRedirectStatus(resolverInternal, userInternal.auth);
1938
+ const eventId = await prepareUserForRedirect(userInternal);
1939
+ return resolverInternal._openRedirect(userInternal.auth, provider, "reauthViaRedirect" /* AuthEventType.REAUTH_VIA_REDIRECT */, eventId);
1940
+ }
1941
+ /**
1942
+ * Links the {@link OAuthProvider} to the user account using a full-page redirect flow.
1943
+ * @remarks
1944
+ * To handle the results and errors for this operation, refer to {@link getRedirectResult}.
1945
+ * Follow the {@link https://firebase.google.com/docs/auth/web/redirect-best-practices
1946
+ * | best practices} when using {@link linkWithRedirect}.
1947
+ *
1948
+ * This method does not work in a Node.js environment or with {@link Auth} instances
1949
+ * created with a {@link @firebase/app#FirebaseServerApp}.
1950
+ *
1951
+ * @example
1952
+ * ```javascript
1953
+ * // Sign in using some other provider.
1954
+ * const result = await signInWithEmailAndPassword(auth, email, password);
1955
+ * // Link using a redirect.
1956
+ * const provider = new FacebookAuthProvider();
1957
+ * await linkWithRedirect(result.user, provider);
1958
+ * // This will trigger a full page redirect away from your app
1959
+ *
1960
+ * // After returning from the redirect when your app initializes you can obtain the result
1961
+ * const result = await getRedirectResult(auth);
1962
+ * ```
1963
+ *
1964
+ * @param user - The user.
1965
+ * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.
1966
+ * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.
1967
+ * @param resolver - An instance of {@link PopupRedirectResolver}, optional
1968
+ * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.
1969
+ *
1970
+ * @public
1971
+ */
1972
+ function linkWithRedirect(user, provider, resolver) {
1973
+ return _linkWithRedirect(user, provider, resolver);
1974
+ }
1975
+ async function _linkWithRedirect(user, provider, resolver) {
1976
+ const userInternal = getModularInstance(user);
1977
+ _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);
1978
+ // Wait for auth initialization to complete, this will process pending redirects and clear the
1979
+ // PENDING_REDIRECT_KEY in persistence. This should be completed before starting a new
1980
+ // redirect and creating a PENDING_REDIRECT_KEY entry.
1981
+ await userInternal.auth._initializationPromise;
1982
+ // Allow the resolver to error before persisting the redirect user
1983
+ const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);
1984
+ await _assertLinkedStatus(false, userInternal, provider.providerId);
1985
+ await _setPendingRedirectStatus(resolverInternal, userInternal.auth);
1986
+ const eventId = await prepareUserForRedirect(userInternal);
1987
+ return resolverInternal._openRedirect(userInternal.auth, provider, "linkViaRedirect" /* AuthEventType.LINK_VIA_REDIRECT */, eventId);
1988
+ }
1989
+ /**
1990
+ * Returns a {@link UserCredential} from the redirect-based sign-in flow.
1991
+ *
1992
+ * @remarks
1993
+ * If sign-in succeeded, returns the signed in user. If sign-in was unsuccessful, fails with an
1994
+ * error. If no redirect operation was called, returns `null`.
1995
+ *
1996
+ * This method does not work in a Node.js environment or with {@link Auth} instances created with a
1997
+ * {@link @firebase/app#FirebaseServerApp}.
1998
+ *
1999
+ * @example
2000
+ * ```javascript
2001
+ * // Sign in using a redirect.
2002
+ * const provider = new FacebookAuthProvider();
2003
+ * // You can add additional scopes to the provider:
2004
+ * provider.addScope('user_birthday');
2005
+ * // Start a sign in process for an unauthenticated user.
2006
+ * await signInWithRedirect(auth, provider);
2007
+ * // This will trigger a full page redirect away from your app
2008
+ *
2009
+ * // After returning from the redirect when your app initializes you can obtain the result
2010
+ * const result = await getRedirectResult(auth);
2011
+ * if (result) {
2012
+ * // This is the signed-in user
2013
+ * const user = result.user;
2014
+ * // This gives you a Facebook Access Token.
2015
+ * const credential = provider.credentialFromResult(auth, result);
2016
+ * const token = credential.accessToken;
2017
+ * }
2018
+ * // As this API can be used for sign-in, linking and reauthentication,
2019
+ * // check the operationType to determine what triggered this redirect
2020
+ * // operation.
2021
+ * const operationType = result.operationType;
2022
+ * ```
2023
+ *
2024
+ * @param auth - The {@link Auth} instance.
2025
+ * @param resolver - An instance of {@link PopupRedirectResolver}, optional
2026
+ * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.
2027
+ *
2028
+ * @public
2029
+ */
2030
+ async function getRedirectResult(auth, resolver) {
2031
+ await _castAuth(auth)._initializationPromise;
2032
+ return _getRedirectResult(auth, resolver, false);
2033
+ }
2034
+ async function _getRedirectResult(auth, resolverExtern, bypassAuthState = false) {
2035
+ if (_isFirebaseServerApp(auth.app)) {
2036
+ return Promise.reject(_serverAppCurrentUserOperationNotSupportedError(auth));
2037
+ }
2038
+ const authInternal = _castAuth(auth);
2039
+ const resolver = _withDefaultResolver(authInternal, resolverExtern);
2040
+ const action = new RedirectAction(authInternal, resolver, bypassAuthState);
2041
+ const result = await action.execute();
2042
+ if (result && !bypassAuthState) {
2043
+ delete result.user._redirectEventId;
2044
+ await authInternal._persistUserIfCurrent(result.user);
2045
+ await authInternal._setRedirectUser(null, resolverExtern);
2046
+ }
2047
+ return result;
2048
+ }
2049
+ async function prepareUserForRedirect(user) {
2050
+ const eventId = _generateEventId(`${user.uid}:::`);
2051
+ user._redirectEventId = eventId;
2052
+ await user.auth._setRedirectUser(user);
2053
+ await user.auth._persistUserIfCurrent(user);
2054
+ return eventId;
2055
+ }
2056
+
2057
+ /**
2058
+ * @license
2059
+ * Copyright 2020 Google LLC
2060
+ *
2061
+ * Licensed under the Apache License, Version 2.0 (the "License");
2062
+ * you may not use this file except in compliance with the License.
2063
+ * You may obtain a copy of the License at
2064
+ *
2065
+ * http://www.apache.org/licenses/LICENSE-2.0
2066
+ *
2067
+ * Unless required by applicable law or agreed to in writing, software
2068
+ * distributed under the License is distributed on an "AS IS" BASIS,
2069
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2070
+ * See the License for the specific language governing permissions and
2071
+ * limitations under the License.
2072
+ */
2073
+ // The amount of time to store the UIDs of seen events; this is
2074
+ // set to 10 min by default
2075
+ const EVENT_DUPLICATION_CACHE_DURATION_MS = 10 * 60 * 1000;
2076
+ class AuthEventManager {
2077
+ constructor(auth) {
2078
+ this.auth = auth;
2079
+ this.cachedEventUids = new Set();
2080
+ this.consumers = new Set();
2081
+ this.queuedRedirectEvent = null;
2082
+ this.hasHandledPotentialRedirect = false;
2083
+ this.lastProcessedEventTime = Date.now();
2084
+ }
2085
+ registerConsumer(authEventConsumer) {
2086
+ this.consumers.add(authEventConsumer);
2087
+ if (this.queuedRedirectEvent &&
2088
+ this.isEventForConsumer(this.queuedRedirectEvent, authEventConsumer)) {
2089
+ this.sendToConsumer(this.queuedRedirectEvent, authEventConsumer);
2090
+ this.saveEventToCache(this.queuedRedirectEvent);
2091
+ this.queuedRedirectEvent = null;
2092
+ }
2093
+ }
2094
+ unregisterConsumer(authEventConsumer) {
2095
+ this.consumers.delete(authEventConsumer);
2096
+ }
2097
+ onEvent(event) {
2098
+ // Check if the event has already been handled
2099
+ if (this.hasEventBeenHandled(event)) {
2100
+ return false;
2101
+ }
2102
+ let handled = false;
2103
+ this.consumers.forEach(consumer => {
2104
+ if (this.isEventForConsumer(event, consumer)) {
2105
+ handled = true;
2106
+ this.sendToConsumer(event, consumer);
2107
+ this.saveEventToCache(event);
2108
+ }
2109
+ });
2110
+ if (this.hasHandledPotentialRedirect || !isRedirectEvent(event)) {
2111
+ // If we've already seen a redirect before, or this is a popup event,
2112
+ // bail now
2113
+ return handled;
2114
+ }
2115
+ this.hasHandledPotentialRedirect = true;
2116
+ // If the redirect wasn't handled, hang on to it
2117
+ if (!handled) {
2118
+ this.queuedRedirectEvent = event;
2119
+ handled = true;
2120
+ }
2121
+ return handled;
2122
+ }
2123
+ sendToConsumer(event, consumer) {
2124
+ if (event.error && !isNullRedirectEvent(event)) {
2125
+ const code = event.error.code?.split('auth/')[1] ||
2126
+ "internal-error" /* AuthErrorCode.INTERNAL_ERROR */;
2127
+ consumer.onError(_createError(this.auth, code));
2128
+ }
2129
+ else {
2130
+ consumer.onAuthEvent(event);
2131
+ }
2132
+ }
2133
+ isEventForConsumer(event, consumer) {
2134
+ const eventIdMatches = consumer.eventId === null ||
2135
+ (!!event.eventId && event.eventId === consumer.eventId);
2136
+ return consumer.filter.includes(event.type) && eventIdMatches;
2137
+ }
2138
+ hasEventBeenHandled(event) {
2139
+ if (Date.now() - this.lastProcessedEventTime >=
2140
+ EVENT_DUPLICATION_CACHE_DURATION_MS) {
2141
+ this.cachedEventUids.clear();
2142
+ }
2143
+ return this.cachedEventUids.has(eventUid(event));
2144
+ }
2145
+ saveEventToCache(event) {
2146
+ this.cachedEventUids.add(eventUid(event));
2147
+ this.lastProcessedEventTime = Date.now();
2148
+ }
2149
+ }
2150
+ function eventUid(e) {
2151
+ return [e.type, e.eventId, e.sessionId, e.tenantId].filter(v => v).join('-');
2152
+ }
2153
+ function isNullRedirectEvent({ type, error }) {
2154
+ return (type === "unknown" /* AuthEventType.UNKNOWN */ &&
2155
+ error?.code === `auth/${"no-auth-event" /* AuthErrorCode.NO_AUTH_EVENT */}`);
2156
+ }
2157
+ function isRedirectEvent(event) {
2158
+ switch (event.type) {
2159
+ case "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */:
2160
+ case "linkViaRedirect" /* AuthEventType.LINK_VIA_REDIRECT */:
2161
+ case "reauthViaRedirect" /* AuthEventType.REAUTH_VIA_REDIRECT */:
2162
+ return true;
2163
+ case "unknown" /* AuthEventType.UNKNOWN */:
2164
+ return isNullRedirectEvent(event);
2165
+ default:
2166
+ return false;
2167
+ }
2168
+ }
2169
+
2170
+ /**
2171
+ * @license
2172
+ * Copyright 2020 Google LLC
2173
+ *
2174
+ * Licensed under the Apache License, Version 2.0 (the "License");
2175
+ * you may not use this file except in compliance with the License.
2176
+ * You may obtain a copy of the License at
2177
+ *
2178
+ * http://www.apache.org/licenses/LICENSE-2.0
2179
+ *
2180
+ * Unless required by applicable law or agreed to in writing, software
2181
+ * distributed under the License is distributed on an "AS IS" BASIS,
2182
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2183
+ * See the License for the specific language governing permissions and
2184
+ * limitations under the License.
2185
+ */
2186
+ async function _getProjectConfig(auth, request = {}) {
2187
+ return _performApiRequest(auth, "GET" /* HttpMethod.GET */, "/v1/projects" /* Endpoint.GET_PROJECT_CONFIG */, request);
2188
+ }
2189
+
2190
+ /**
2191
+ * @license
2192
+ * Copyright 2020 Google LLC
2193
+ *
2194
+ * Licensed under the Apache License, Version 2.0 (the "License");
2195
+ * you may not use this file except in compliance with the License.
2196
+ * You may obtain a copy of the License at
2197
+ *
2198
+ * http://www.apache.org/licenses/LICENSE-2.0
2199
+ *
2200
+ * Unless required by applicable law or agreed to in writing, software
2201
+ * distributed under the License is distributed on an "AS IS" BASIS,
2202
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2203
+ * See the License for the specific language governing permissions and
2204
+ * limitations under the License.
2205
+ */
2206
+ const IP_ADDRESS_REGEX = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
2207
+ const HTTP_REGEX = /^https?/;
2208
+ async function _validateOrigin$1(auth) {
2209
+ // Skip origin validation if we are in an emulated environment
2210
+ if (auth.config.emulator) {
2211
+ return;
2212
+ }
2213
+ const { authorizedDomains } = await _getProjectConfig(auth);
2214
+ for (const domain of authorizedDomains) {
2215
+ try {
2216
+ if (matchDomain(domain)) {
2217
+ return;
2218
+ }
2219
+ }
2220
+ catch {
2221
+ // Do nothing if there's a URL error; just continue searching
2222
+ }
2223
+ }
2224
+ // In the old SDK, this error also provides helpful messages.
2225
+ _fail(auth, "unauthorized-domain" /* AuthErrorCode.INVALID_ORIGIN */);
2226
+ }
2227
+ function matchDomain(expected) {
2228
+ const currentUrl = _getCurrentUrl();
2229
+ const { protocol, hostname } = new URL(currentUrl);
2230
+ if (expected.startsWith('chrome-extension://')) {
2231
+ const ceUrl = new URL(expected);
2232
+ if (ceUrl.hostname === '' && hostname === '') {
2233
+ // For some reason we're not parsing chrome URLs properly
2234
+ return (protocol === 'chrome-extension:' &&
2235
+ expected.replace('chrome-extension://', '') ===
2236
+ currentUrl.replace('chrome-extension://', ''));
2237
+ }
2238
+ return protocol === 'chrome-extension:' && ceUrl.hostname === hostname;
2239
+ }
2240
+ if (!HTTP_REGEX.test(protocol)) {
2241
+ return false;
2242
+ }
2243
+ if (IP_ADDRESS_REGEX.test(expected)) {
2244
+ // The domain has to be exactly equal to the pattern, as an IP domain will
2245
+ // only contain the IP, no extra character.
2246
+ return hostname === expected;
2247
+ }
2248
+ // Dots in pattern should be escaped.
2249
+ const escapedDomainPattern = expected.replace(/\./g, '\\.');
2250
+ // Non ip address domains.
2251
+ // domain.com = *.domain.com OR domain.com
2252
+ const re = new RegExp('^(.+\\.' + escapedDomainPattern + '|' + escapedDomainPattern + ')$', 'i');
2253
+ return re.test(hostname);
2254
+ }
2255
+
2256
+ /**
2257
+ * @license
2258
+ * Copyright 2020 Google LLC.
2259
+ *
2260
+ * Licensed under the Apache License, Version 2.0 (the "License");
2261
+ * you may not use this file except in compliance with the License.
2262
+ * You may obtain a copy of the License at
2263
+ *
2264
+ * http://www.apache.org/licenses/LICENSE-2.0
2265
+ *
2266
+ * Unless required by applicable law or agreed to in writing, software
2267
+ * distributed under the License is distributed on an "AS IS" BASIS,
2268
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2269
+ * See the License for the specific language governing permissions and
2270
+ * limitations under the License.
2271
+ */
2272
+ const NETWORK_TIMEOUT = new Delay(30000, 60000);
2273
+ /**
2274
+ * Reset unloaded GApi modules. If gapi.load fails due to a network error,
2275
+ * it will stop working after a retrial. This is a hack to fix this issue.
2276
+ */
2277
+ function resetUnloadedGapiModules() {
2278
+ // Clear last failed gapi.load state to force next gapi.load to first
2279
+ // load the failed gapi.iframes module.
2280
+ // Get gapix.beacon context.
2281
+ const beacon = _window().___jsl;
2282
+ // Get current hint.
2283
+ if (beacon?.H) {
2284
+ // Get gapi hint.
2285
+ for (const hint of Object.keys(beacon.H)) {
2286
+ // Requested modules.
2287
+ beacon.H[hint].r = beacon.H[hint].r || [];
2288
+ // Loaded modules.
2289
+ beacon.H[hint].L = beacon.H[hint].L || [];
2290
+ // Set requested modules to a copy of the loaded modules.
2291
+ beacon.H[hint].r = [...beacon.H[hint].L];
2292
+ // Clear pending callbacks.
2293
+ if (beacon.CP) {
2294
+ for (let i = 0; i < beacon.CP.length; i++) {
2295
+ // Remove all failed pending callbacks.
2296
+ beacon.CP[i] = null;
2297
+ }
2298
+ }
2299
+ }
2300
+ }
2301
+ }
2302
+ function loadGapi(auth) {
2303
+ return new Promise((resolve, reject) => {
2304
+ // Function to run when gapi.load is ready.
2305
+ function loadGapiIframe() {
2306
+ // The developer may have tried to previously run gapi.load and failed.
2307
+ // Run this to fix that.
2308
+ resetUnloadedGapiModules();
2309
+ gapi.load('gapi.iframes', {
2310
+ callback: () => {
2311
+ resolve(gapi.iframes.getContext());
2312
+ },
2313
+ ontimeout: () => {
2314
+ // The above reset may be sufficient, but having this reset after
2315
+ // failure ensures that if the developer calls gapi.load after the
2316
+ // connection is re-established and before another attempt to embed
2317
+ // the iframe, it would work and would not be broken because of our
2318
+ // failed attempt.
2319
+ // Timeout when gapi.iframes.Iframe not loaded.
2320
+ resetUnloadedGapiModules();
2321
+ reject(_createError(auth, "network-request-failed" /* AuthErrorCode.NETWORK_REQUEST_FAILED */));
2322
+ },
2323
+ timeout: NETWORK_TIMEOUT.get()
2324
+ });
2325
+ }
2326
+ if (_window().gapi?.iframes?.Iframe) {
2327
+ // If gapi.iframes.Iframe available, resolve.
2328
+ resolve(gapi.iframes.getContext());
2329
+ }
2330
+ else if (!!_window().gapi?.load) {
2331
+ // Gapi loader ready, load gapi.iframes.
2332
+ loadGapiIframe();
2333
+ }
2334
+ else {
2335
+ // Create a new iframe callback when this is called so as not to overwrite
2336
+ // any previous defined callback. This happens if this method is called
2337
+ // multiple times in parallel and could result in the later callback
2338
+ // overwriting the previous one. This would end up with a iframe
2339
+ // timeout.
2340
+ const cbName = _generateCallbackName('iframefcb');
2341
+ // GApi loader not available, dynamically load platform.js.
2342
+ _window()[cbName] = () => {
2343
+ // GApi loader should be ready.
2344
+ if (!!gapi.load) {
2345
+ loadGapiIframe();
2346
+ }
2347
+ else {
2348
+ // Gapi loader failed, throw error.
2349
+ reject(_createError(auth, "network-request-failed" /* AuthErrorCode.NETWORK_REQUEST_FAILED */));
2350
+ }
2351
+ };
2352
+ // Load GApi loader.
2353
+ return _loadJS(`${_gapiScriptUrl()}?onload=${cbName}`)
2354
+ .catch(e => reject(e));
2355
+ }
2356
+ }).catch(error => {
2357
+ // Reset cached promise to allow for retrial.
2358
+ cachedGApiLoader = null;
2359
+ throw error;
2360
+ });
2361
+ }
2362
+ let cachedGApiLoader = null;
2363
+ function _loadGapi(auth) {
2364
+ cachedGApiLoader = cachedGApiLoader || loadGapi(auth);
2365
+ return cachedGApiLoader;
2366
+ }
2367
+
2368
+ /**
2369
+ * @license
2370
+ * Copyright 2020 Google LLC.
2371
+ *
2372
+ * Licensed under the Apache License, Version 2.0 (the "License");
2373
+ * you may not use this file except in compliance with the License.
2374
+ * You may obtain a copy of the License at
2375
+ *
2376
+ * http://www.apache.org/licenses/LICENSE-2.0
2377
+ *
2378
+ * Unless required by applicable law or agreed to in writing, software
2379
+ * distributed under the License is distributed on an "AS IS" BASIS,
2380
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2381
+ * See the License for the specific language governing permissions and
2382
+ * limitations under the License.
2383
+ */
2384
+ const PING_TIMEOUT = new Delay(5000, 15000);
2385
+ const IFRAME_PATH = '__/auth/iframe';
2386
+ const EMULATED_IFRAME_PATH = 'emulator/auth/iframe';
2387
+ const IFRAME_ATTRIBUTES = {
2388
+ style: {
2389
+ position: 'absolute',
2390
+ top: '-100px',
2391
+ width: '1px',
2392
+ height: '1px'
2393
+ },
2394
+ 'aria-hidden': 'true',
2395
+ tabindex: '-1'
2396
+ };
2397
+ // Map from apiHost to endpoint ID for passing into iframe. In current SDK, apiHost can be set to
2398
+ // anything (not from a list of endpoints with IDs as in legacy), so this is the closest we can get.
2399
+ const EID_FROM_APIHOST = new Map([
2400
+ ["identitytoolkit.googleapis.com" /* DefaultConfig.API_HOST */, 'p'], // production
2401
+ ['staging-identitytoolkit.sandbox.googleapis.com', 's'], // staging
2402
+ ['test-identitytoolkit.sandbox.googleapis.com', 't'] // test
2403
+ ]);
2404
+ function getIframeUrl(auth) {
2405
+ const config = auth.config;
2406
+ _assert(config.authDomain, auth, "auth-domain-config-required" /* AuthErrorCode.MISSING_AUTH_DOMAIN */);
2407
+ const url = config.emulator
2408
+ ? _emulatorUrl(config, EMULATED_IFRAME_PATH)
2409
+ : `https://${auth.config.authDomain}/${IFRAME_PATH}`;
2410
+ const params = {
2411
+ apiKey: config.apiKey,
2412
+ appName: auth.name,
2413
+ v: SDK_VERSION
2414
+ };
2415
+ const eid = EID_FROM_APIHOST.get(auth.config.apiHost);
2416
+ if (eid) {
2417
+ params.eid = eid;
2418
+ }
2419
+ const frameworks = auth._getFrameworks();
2420
+ if (frameworks.length) {
2421
+ params.fw = frameworks.join(',');
2422
+ }
2423
+ return `${url}?${querystring(params).slice(1)}`;
2424
+ }
2425
+ async function _openIframe(auth) {
2426
+ const context = await _loadGapi(auth);
2427
+ const gapi = _window().gapi;
2428
+ _assert(gapi, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
2429
+ return context.open({
2430
+ where: document.body,
2431
+ url: getIframeUrl(auth),
2432
+ messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER,
2433
+ attributes: IFRAME_ATTRIBUTES,
2434
+ dontclear: true
2435
+ }, (iframe) => new Promise(async (resolve, reject) => {
2436
+ await iframe.restyle({
2437
+ // Prevent iframe from closing on mouse out.
2438
+ setHideOnLeave: false
2439
+ });
2440
+ const networkError = _createError(auth, "network-request-failed" /* AuthErrorCode.NETWORK_REQUEST_FAILED */);
2441
+ // Confirm iframe is correctly loaded.
2442
+ // To fallback on failure, set a timeout.
2443
+ const networkErrorTimer = _window().setTimeout(() => {
2444
+ reject(networkError);
2445
+ }, PING_TIMEOUT.get());
2446
+ // Clear timer and resolve pending iframe ready promise.
2447
+ function clearTimerAndResolve() {
2448
+ _window().clearTimeout(networkErrorTimer);
2449
+ resolve(iframe);
2450
+ }
2451
+ // This returns an IThenable. However the reject part does not call
2452
+ // when the iframe is not loaded.
2453
+ iframe.ping(clearTimerAndResolve).then(clearTimerAndResolve, () => {
2454
+ reject(networkError);
2455
+ });
2456
+ }));
2457
+ }
2458
+
2459
+ /**
2460
+ * @license
2461
+ * Copyright 2020 Google LLC.
2462
+ *
2463
+ * Licensed under the Apache License, Version 2.0 (the "License");
2464
+ * you may not use this file except in compliance with the License.
2465
+ * You may obtain a copy of the License at
2466
+ *
2467
+ * http://www.apache.org/licenses/LICENSE-2.0
2468
+ *
2469
+ * Unless required by applicable law or agreed to in writing, software
2470
+ * distributed under the License is distributed on an "AS IS" BASIS,
2471
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2472
+ * See the License for the specific language governing permissions and
2473
+ * limitations under the License.
2474
+ */
2475
+ const BASE_POPUP_OPTIONS = {
2476
+ location: 'yes',
2477
+ resizable: 'yes',
2478
+ statusbar: 'yes',
2479
+ toolbar: 'no'
2480
+ };
2481
+ const DEFAULT_WIDTH = 500;
2482
+ const DEFAULT_HEIGHT = 600;
2483
+ const TARGET_BLANK = '_blank';
2484
+ const FIREFOX_EMPTY_URL = 'http://localhost';
2485
+ class AuthPopup {
2486
+ constructor(window) {
2487
+ this.window = window;
2488
+ this.associatedEvent = null;
2489
+ }
2490
+ close() {
2491
+ if (this.window) {
2492
+ try {
2493
+ this.window.close();
2494
+ }
2495
+ catch (e) { }
2496
+ }
2497
+ }
2498
+ }
2499
+ function _open(auth, url, name, width = DEFAULT_WIDTH, height = DEFAULT_HEIGHT) {
2500
+ const top = Math.max((window.screen.availHeight - height) / 2, 0).toString();
2501
+ const left = Math.max((window.screen.availWidth - width) / 2, 0).toString();
2502
+ let target = '';
2503
+ const options = {
2504
+ ...BASE_POPUP_OPTIONS,
2505
+ width: width.toString(),
2506
+ height: height.toString(),
2507
+ top,
2508
+ left
2509
+ };
2510
+ // Chrome iOS 7 and 8 is returning an undefined popup win when target is
2511
+ // specified, even though the popup is not necessarily blocked.
2512
+ const ua = getUA().toLowerCase();
2513
+ if (name) {
2514
+ target = _isChromeIOS(ua) ? TARGET_BLANK : name;
2515
+ }
2516
+ if (_isFirefox(ua)) {
2517
+ // Firefox complains when invalid URLs are popped out. Hacky way to bypass.
2518
+ url = url || FIREFOX_EMPTY_URL;
2519
+ // Firefox disables by default scrolling on popup windows, which can create
2520
+ // issues when the user has many Google accounts, for instance.
2521
+ options.scrollbars = 'yes';
2522
+ }
2523
+ const optionsString = Object.entries(options).reduce((accum, [key, value]) => `${accum}${key}=${value},`, '');
2524
+ if (_isIOSStandalone(ua) && target !== '_self') {
2525
+ openAsNewWindowIOS(url || '', target);
2526
+ return new AuthPopup(null);
2527
+ }
2528
+ // about:blank getting sanitized causing browsers like IE/Edge to display
2529
+ // brief error message before redirecting to handler.
2530
+ const newWin = window.open(url || '', target, optionsString);
2531
+ _assert(newWin, auth, "popup-blocked" /* AuthErrorCode.POPUP_BLOCKED */);
2532
+ // Flaky on IE edge, encapsulate with a try and catch.
2533
+ try {
2534
+ newWin.focus();
2535
+ }
2536
+ catch (e) { }
2537
+ return new AuthPopup(newWin);
2538
+ }
2539
+ function openAsNewWindowIOS(url, target) {
2540
+ const el = document.createElement('a');
2541
+ el.href = url;
2542
+ el.target = target;
2543
+ const click = document.createEvent('MouseEvent');
2544
+ click.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, null);
2545
+ el.dispatchEvent(click);
2546
+ }
2547
+
2548
+ /**
2549
+ * @license
2550
+ * Copyright 2021 Google LLC
2551
+ *
2552
+ * Licensed under the Apache License, Version 2.0 (the "License");
2553
+ * you may not use this file except in compliance with the License.
2554
+ * You may obtain a copy of the License at
2555
+ *
2556
+ * http://www.apache.org/licenses/LICENSE-2.0
2557
+ *
2558
+ * Unless required by applicable law or agreed to in writing, software
2559
+ * distributed under the License is distributed on an "AS IS" BASIS,
2560
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2561
+ * See the License for the specific language governing permissions and
2562
+ * limitations under the License.
2563
+ */
2564
+ /**
2565
+ * URL for Authentication widget which will initiate the OAuth handshake
2566
+ *
2567
+ * @internal
2568
+ */
2569
+ const WIDGET_PATH = '__/auth/handler';
2570
+ /**
2571
+ * URL for emulated environment
2572
+ *
2573
+ * @internal
2574
+ */
2575
+ const EMULATOR_WIDGET_PATH = 'emulator/auth/handler';
2576
+ /**
2577
+ * Fragment name for the App Check token that gets passed to the widget
2578
+ *
2579
+ * @internal
2580
+ */
2581
+ const FIREBASE_APP_CHECK_FRAGMENT_ID = encodeURIComponent('fac');
2582
+ async function _getRedirectUrl(auth, provider, authType, redirectUrl, eventId, additionalParams) {
2583
+ _assert(auth.config.authDomain, auth, "auth-domain-config-required" /* AuthErrorCode.MISSING_AUTH_DOMAIN */);
2584
+ _assert(auth.config.apiKey, auth, "invalid-api-key" /* AuthErrorCode.INVALID_API_KEY */);
2585
+ const params = {
2586
+ apiKey: auth.config.apiKey,
2587
+ appName: auth.name,
2588
+ authType,
2589
+ redirectUrl,
2590
+ v: SDK_VERSION,
2591
+ eventId
2592
+ };
2593
+ if (provider instanceof FederatedAuthProvider) {
2594
+ provider.setDefaultLanguage(auth.languageCode);
2595
+ params.providerId = provider.providerId || '';
2596
+ if (!isEmpty(provider.getCustomParameters())) {
2597
+ params.customParameters = JSON.stringify(provider.getCustomParameters());
2598
+ }
2599
+ // TODO set additionalParams from the provider as well?
2600
+ for (const [key, value] of Object.entries(additionalParams || {})) {
2601
+ params[key] = value;
2602
+ }
2603
+ }
2604
+ if (provider instanceof BaseOAuthProvider) {
2605
+ const scopes = provider.getScopes().filter(scope => scope !== '');
2606
+ if (scopes.length > 0) {
2607
+ params.scopes = scopes.join(',');
2608
+ }
2609
+ }
2610
+ if (auth.tenantId) {
2611
+ params.tid = auth.tenantId;
2612
+ }
2613
+ // TODO: maybe set eid as endpointId
2614
+ // TODO: maybe set fw as Frameworks.join(",")
2615
+ const paramsDict = params;
2616
+ for (const key of Object.keys(paramsDict)) {
2617
+ if (paramsDict[key] === undefined) {
2618
+ delete paramsDict[key];
2619
+ }
2620
+ }
2621
+ // Sets the App Check token to pass to the widget
2622
+ const appCheckToken = await auth._getAppCheckToken();
2623
+ const appCheckTokenFragment = appCheckToken
2624
+ ? `#${FIREBASE_APP_CHECK_FRAGMENT_ID}=${encodeURIComponent(appCheckToken)}`
2625
+ : '';
2626
+ // Start at index 1 to skip the leading '&' in the query string
2627
+ return `${getHandlerBase(auth)}?${querystring(paramsDict).slice(1)}${appCheckTokenFragment}`;
2628
+ }
2629
+ function getHandlerBase({ config }) {
2630
+ if (!config.emulator) {
2631
+ return `https://${config.authDomain}/${WIDGET_PATH}`;
2632
+ }
2633
+ return _emulatorUrl(config, EMULATOR_WIDGET_PATH);
2634
+ }
2635
+
2636
+ /**
2637
+ * @license
2638
+ * Copyright 2020 Google LLC
2639
+ *
2640
+ * Licensed under the Apache License, Version 2.0 (the "License");
2641
+ * you may not use this file except in compliance with the License.
2642
+ * You may obtain a copy of the License at
2643
+ *
2644
+ * http://www.apache.org/licenses/LICENSE-2.0
2645
+ *
2646
+ * Unless required by applicable law or agreed to in writing, software
2647
+ * distributed under the License is distributed on an "AS IS" BASIS,
2648
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2649
+ * See the License for the specific language governing permissions and
2650
+ * limitations under the License.
2651
+ */
2652
+ /**
2653
+ * The special web storage event
2654
+ *
2655
+ */
2656
+ const WEB_STORAGE_SUPPORT_KEY = 'webStorageSupport';
2657
+ class BrowserPopupRedirectResolver {
2658
+ constructor() {
2659
+ this.eventManagers = {};
2660
+ this.iframes = {};
2661
+ this.originValidationPromises = {};
2662
+ this._redirectPersistence = browserSessionPersistence;
2663
+ this._completeRedirectFn = _getRedirectResult;
2664
+ this._overrideRedirectResult = _overrideRedirectResult;
2665
+ }
2666
+ // Wrapping in async even though we don't await anywhere in order
2667
+ // to make sure errors are raised as promise rejections
2668
+ async _openPopup(auth, provider, authType, eventId) {
2669
+ debugAssert(this.eventManagers[auth._key()]?.manager, '_initialize() not called before _openPopup()');
2670
+ const url = await _getRedirectUrl(auth, provider, authType, _getCurrentUrl(), eventId);
2671
+ return _open(auth, url, _generateEventId());
2672
+ }
2673
+ async _openRedirect(auth, provider, authType, eventId) {
2674
+ await this._originValidation(auth);
2675
+ const url = await _getRedirectUrl(auth, provider, authType, _getCurrentUrl(), eventId);
2676
+ _setWindowLocation(url);
2677
+ return new Promise(() => { });
2678
+ }
2679
+ _initialize(auth) {
2680
+ const key = auth._key();
2681
+ if (this.eventManagers[key]) {
2682
+ const { manager, promise } = this.eventManagers[key];
2683
+ if (manager) {
2684
+ return Promise.resolve(manager);
2685
+ }
2686
+ else {
2687
+ debugAssert(promise, 'If manager is not set, promise should be');
2688
+ return promise;
2689
+ }
2690
+ }
2691
+ const promise = this.initAndGetManager(auth);
2692
+ this.eventManagers[key] = { promise };
2693
+ // If the promise is rejected, the key should be removed so that the
2694
+ // operation can be retried later.
2695
+ promise.catch(() => {
2696
+ delete this.eventManagers[key];
2697
+ });
2698
+ return promise;
2699
+ }
2700
+ async initAndGetManager(auth) {
2701
+ const iframe = await _openIframe(auth);
2702
+ const manager = new AuthEventManager(auth);
2703
+ iframe.register('authEvent', (iframeEvent) => {
2704
+ _assert(iframeEvent?.authEvent, auth, "invalid-auth-event" /* AuthErrorCode.INVALID_AUTH_EVENT */);
2705
+ // TODO: Consider splitting redirect and popup events earlier on
2706
+ const handled = manager.onEvent(iframeEvent.authEvent);
2707
+ return { status: handled ? "ACK" /* GapiOutcome.ACK */ : "ERROR" /* GapiOutcome.ERROR */ };
2708
+ }, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);
2709
+ this.eventManagers[auth._key()] = { manager };
2710
+ this.iframes[auth._key()] = iframe;
2711
+ return manager;
2712
+ }
2713
+ _isIframeWebStorageSupported(auth, cb) {
2714
+ const iframe = this.iframes[auth._key()];
2715
+ iframe.send(WEB_STORAGE_SUPPORT_KEY, { type: WEB_STORAGE_SUPPORT_KEY }, result => {
2716
+ const isSupported = result?.[0]?.[WEB_STORAGE_SUPPORT_KEY];
2717
+ if (isSupported !== undefined) {
2718
+ cb(!!isSupported);
2719
+ }
2720
+ _fail(auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
2721
+ }, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);
2722
+ }
2723
+ _originValidation(auth) {
2724
+ const key = auth._key();
2725
+ if (!this.originValidationPromises[key]) {
2726
+ this.originValidationPromises[key] = _validateOrigin$1(auth);
2727
+ }
2728
+ return this.originValidationPromises[key];
2729
+ }
2730
+ get _shouldInitProactively() {
2731
+ // Mobile browsers and Safari need to optimistically initialize
2732
+ return _isMobileBrowser() || _isSafari() || _isIOS();
2733
+ }
2734
+ }
2735
+ /**
2736
+ * An implementation of {@link PopupRedirectResolver} suitable for browser
2737
+ * based applications.
2738
+ *
2739
+ * @remarks
2740
+ * This method does not work in a Node.js environment.
2741
+ *
2742
+ * @public
2743
+ */
2744
+ const browserPopupRedirectResolver = BrowserPopupRedirectResolver;
2745
+
2746
+ /**
2747
+ * {@inheritdoc PhoneMultiFactorAssertion}
2748
+ *
2749
+ * @public
2750
+ */
2751
+ class PhoneMultiFactorAssertionImpl extends MultiFactorAssertionImpl {
2752
+ constructor(credential) {
2753
+ super("phone" /* FactorId.PHONE */);
2754
+ this.credential = credential;
2755
+ }
2756
+ /** @internal */
2757
+ static _fromCredential(credential) {
2758
+ return new PhoneMultiFactorAssertionImpl(credential);
2759
+ }
2760
+ /** @internal */
2761
+ _finalizeEnroll(auth, idToken, displayName) {
2762
+ return finalizeEnrollPhoneMfa(auth, {
2763
+ idToken,
2764
+ displayName,
2765
+ phoneVerificationInfo: this.credential._makeVerificationRequest()
2766
+ });
2767
+ }
2768
+ /** @internal */
2769
+ _finalizeSignIn(auth, mfaPendingCredential) {
2770
+ return finalizeSignInPhoneMfa(auth, {
2771
+ mfaPendingCredential,
2772
+ phoneVerificationInfo: this.credential._makeVerificationRequest()
2773
+ });
2774
+ }
2775
+ }
2776
+ /**
2777
+ * Provider for generating a {@link PhoneMultiFactorAssertion}.
2778
+ *
2779
+ * @public
2780
+ */
2781
+ class PhoneMultiFactorGenerator {
2782
+ constructor() { }
2783
+ /**
2784
+ * Provides a {@link PhoneMultiFactorAssertion} to confirm ownership of the phone second factor.
2785
+ *
2786
+ * @remarks
2787
+ * This method does not work in a Node.js environment.
2788
+ *
2789
+ * @param phoneAuthCredential - A credential provided by {@link PhoneAuthProvider.credential}.
2790
+ * @returns A {@link PhoneMultiFactorAssertion} which can be used with
2791
+ * {@link MultiFactorResolver.resolveSignIn}
2792
+ */
2793
+ static assertion(credential) {
2794
+ return PhoneMultiFactorAssertionImpl._fromCredential(credential);
2795
+ }
2796
+ }
2797
+ /**
2798
+ * The identifier of the phone second factor: `phone`.
2799
+ */
2800
+ PhoneMultiFactorGenerator.FACTOR_ID = 'phone';
2801
+
2802
+ /**
2803
+ * @license
2804
+ * Copyright 2021 Google LLC
2805
+ *
2806
+ * Licensed under the Apache License, Version 2.0 (the "License");
2807
+ * you may not use this file except in compliance with the License.
2808
+ * You may obtain a copy of the License at
2809
+ *
2810
+ * http://www.apache.org/licenses/LICENSE-2.0
2811
+ *
2812
+ * Unless required by applicable law or agreed to in writing, software
2813
+ * distributed under the License is distributed on an "AS IS" BASIS,
2814
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2815
+ * See the License for the specific language governing permissions and
2816
+ * limitations under the License.
2817
+ */
2818
+ const DEFAULT_ID_TOKEN_MAX_AGE = 5 * 60;
2819
+ const authIdTokenMaxAge = getExperimentalSetting('authIdTokenMaxAge') || DEFAULT_ID_TOKEN_MAX_AGE;
2820
+ let lastPostedIdToken = null;
2821
+ const mintCookieFactory = (url) => async (user) => {
2822
+ const idTokenResult = user && (await user.getIdTokenResult());
2823
+ const idTokenAge = idTokenResult &&
2824
+ (new Date().getTime() - Date.parse(idTokenResult.issuedAtTime)) / 1000;
2825
+ if (idTokenAge && idTokenAge > authIdTokenMaxAge) {
2826
+ return;
2827
+ }
2828
+ // Specifically trip null => undefined when logged out, to delete any existing cookie
2829
+ const idToken = idTokenResult?.token;
2830
+ if (lastPostedIdToken === idToken) {
2831
+ return;
2832
+ }
2833
+ lastPostedIdToken = idToken;
2834
+ await fetch(url, {
2835
+ method: idToken ? 'POST' : 'DELETE',
2836
+ headers: idToken
2837
+ ? {
2838
+ 'Authorization': `Bearer ${idToken}`
2839
+ }
2840
+ : {}
2841
+ });
2842
+ };
2843
+ /**
2844
+ * Returns the Auth instance associated with the provided {@link @firebase/app#FirebaseApp}.
2845
+ * If no instance exists, initializes an Auth instance with platform-specific default dependencies.
2846
+ *
2847
+ * @param app - The Firebase App.
2848
+ *
2849
+ * @public
2850
+ */
2851
+ function getAuth(app = getApp()) {
2852
+ const provider = _getProvider(app, 'auth');
2853
+ if (provider.isInitialized()) {
2854
+ return provider.getImmediate();
2855
+ }
2856
+ const auth = initializeAuth(app, {
2857
+ popupRedirectResolver: browserPopupRedirectResolver,
2858
+ persistence: [
2859
+ indexedDBLocalPersistence,
2860
+ browserLocalPersistence,
2861
+ browserSessionPersistence
2862
+ ]
2863
+ });
2864
+ const authTokenSyncPath = getExperimentalSetting('authTokenSyncURL');
2865
+ // Only do the Cookie exchange in a secure context
2866
+ if (authTokenSyncPath &&
2867
+ typeof isSecureContext === 'boolean' &&
2868
+ isSecureContext) {
2869
+ // Don't allow urls (XSS possibility), only paths on the same domain
2870
+ const authTokenSyncUrl = new URL(authTokenSyncPath, location.origin);
2871
+ if (location.origin === authTokenSyncUrl.origin) {
2872
+ const mintCookie = mintCookieFactory(authTokenSyncUrl.toString());
2873
+ beforeAuthStateChanged(auth, mintCookie, () => mintCookie(auth.currentUser));
2874
+ onIdTokenChanged(auth, user => mintCookie(user));
2875
+ }
2876
+ }
2877
+ const authEmulatorHost = getDefaultEmulatorHost('auth');
2878
+ if (authEmulatorHost) {
2879
+ connectAuthEmulator(auth, `http://${authEmulatorHost}`);
2880
+ }
2881
+ return auth;
2882
+ }
2883
+ function getScriptParentElement() {
2884
+ return document.getElementsByTagName('head')?.[0] ?? document;
2885
+ }
2886
+ _setExternalJSProvider({
2887
+ loadJS(url) {
2888
+ // TODO: consider adding timeout support & cancellation
2889
+ return new Promise((resolve, reject) => {
2890
+ const el = document.createElement('script');
2891
+ el.setAttribute('src', url);
2892
+ el.onload = resolve;
2893
+ el.onerror = e => {
2894
+ const error = _createError("internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
2895
+ error.customData = e;
2896
+ reject(error);
2897
+ };
2898
+ el.type = 'text/javascript';
2899
+ el.charset = 'UTF-8';
2900
+ getScriptParentElement().appendChild(el);
2901
+ });
2902
+ },
2903
+ gapiScript: 'https://apis.google.com/js/api.js',
2904
+ recaptchaV2Script: 'https://www.google.com/recaptcha/api.js',
2905
+ recaptchaEnterpriseScript: 'https://www.google.com/recaptcha/enterprise.js?render='
2906
+ });
2907
+ registerAuth("Browser" /* ClientPlatform.BROWSER */);
2908
+
2909
+ /**
2910
+ * @license
2911
+ * Copyright 2021 Google LLC
2912
+ *
2913
+ * Licensed under the Apache License, Version 2.0 (the "License");
2914
+ * you may not use this file except in compliance with the License.
2915
+ * You may obtain a copy of the License at
2916
+ *
2917
+ * http://www.apache.org/licenses/LICENSE-2.0
2918
+ *
2919
+ * Unless required by applicable law or agreed to in writing, software
2920
+ * distributed under the License is distributed on an "AS IS" BASIS,
2921
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2922
+ * See the License for the specific language governing permissions and
2923
+ * limitations under the License.
2924
+ */
2925
+ function _cordovaWindow() {
2926
+ return window;
2927
+ }
2928
+
2929
+ /**
2930
+ * @license
2931
+ * Copyright 2020 Google LLC
2932
+ *
2933
+ * Licensed under the Apache License, Version 2.0 (the "License");
2934
+ * you may not use this file except in compliance with the License.
2935
+ * You may obtain a copy of the License at
2936
+ *
2937
+ * http://www.apache.org/licenses/LICENSE-2.0
2938
+ *
2939
+ * Unless required by applicable law or agreed to in writing, software
2940
+ * distributed under the License is distributed on an "AS IS" BASIS,
2941
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2942
+ * See the License for the specific language governing permissions and
2943
+ * limitations under the License.
2944
+ */
2945
+ /**
2946
+ * How long to wait after the app comes back into focus before concluding that
2947
+ * the user closed the sign in tab.
2948
+ */
2949
+ const REDIRECT_TIMEOUT_MS = 2000;
2950
+ /**
2951
+ * Generates the URL for the OAuth handler.
2952
+ */
2953
+ async function _generateHandlerUrl(auth, event, provider) {
2954
+ // Get the cordova plugins
2955
+ const { BuildInfo } = _cordovaWindow();
2956
+ debugAssert(event.sessionId, 'AuthEvent did not contain a session ID');
2957
+ const sessionDigest = await computeSha256(event.sessionId);
2958
+ const additionalParams = {};
2959
+ if (_isIOS()) {
2960
+ // iOS app identifier
2961
+ additionalParams['ibi'] = BuildInfo.packageName;
2962
+ }
2963
+ else if (_isAndroid()) {
2964
+ // Android app identifier
2965
+ additionalParams['apn'] = BuildInfo.packageName;
2966
+ }
2967
+ else {
2968
+ _fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
2969
+ }
2970
+ // Add the display name if available
2971
+ if (BuildInfo.displayName) {
2972
+ additionalParams['appDisplayName'] = BuildInfo.displayName;
2973
+ }
2974
+ // Attached the hashed session ID
2975
+ additionalParams['sessionId'] = sessionDigest;
2976
+ return _getRedirectUrl(auth, provider, event.type, undefined, event.eventId ?? undefined, additionalParams);
2977
+ }
2978
+ /**
2979
+ * Validates that this app is valid for this project configuration
2980
+ */
2981
+ async function _validateOrigin(auth) {
2982
+ const { BuildInfo } = _cordovaWindow();
2983
+ const request = {};
2984
+ if (_isIOS()) {
2985
+ request.iosBundleId = BuildInfo.packageName;
2986
+ }
2987
+ else if (_isAndroid()) {
2988
+ request.androidPackageName = BuildInfo.packageName;
2989
+ }
2990
+ else {
2991
+ _fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
2992
+ }
2993
+ // Will fail automatically if package name is not authorized
2994
+ await _getProjectConfig(auth, request);
2995
+ }
2996
+ function _performRedirect(handlerUrl) {
2997
+ // Get the cordova plugins
2998
+ const { cordova } = _cordovaWindow();
2999
+ return new Promise(resolve => {
3000
+ cordova.plugins.browsertab.isAvailable(browserTabIsAvailable => {
3001
+ let iabRef = null;
3002
+ if (browserTabIsAvailable) {
3003
+ cordova.plugins.browsertab.openUrl(handlerUrl);
3004
+ }
3005
+ else {
3006
+ // TODO: Return the inappbrowser ref that's returned from the open call
3007
+ iabRef = cordova.InAppBrowser.open(handlerUrl, _isIOS7Or8() ? '_blank' : '_system', 'location=yes');
3008
+ }
3009
+ resolve(iabRef);
3010
+ });
3011
+ });
3012
+ }
3013
+ /**
3014
+ * This function waits for app activity to be seen before resolving. It does
3015
+ * this by attaching listeners to various dom events. Once the app is determined
3016
+ * to be visible, this promise resolves. AFTER that resolution, the listeners
3017
+ * are detached and any browser tabs left open will be closed.
3018
+ */
3019
+ async function _waitForAppResume(auth, eventListener, iabRef) {
3020
+ // Get the cordova plugins
3021
+ const { cordova } = _cordovaWindow();
3022
+ let cleanup = () => { };
3023
+ try {
3024
+ await new Promise((resolve, reject) => {
3025
+ let onCloseTimer = null;
3026
+ // DEFINE ALL THE CALLBACKS =====
3027
+ function authEventSeen() {
3028
+ // Auth event was detected. Resolve this promise and close the extra
3029
+ // window if it's still open.
3030
+ resolve();
3031
+ const closeBrowserTab = cordova.plugins.browsertab?.close;
3032
+ if (typeof closeBrowserTab === 'function') {
3033
+ closeBrowserTab();
3034
+ }
3035
+ // Close inappbrowser embedded webview in iOS7 and 8 case if still
3036
+ // open.
3037
+ if (typeof iabRef?.close === 'function') {
3038
+ iabRef.close();
3039
+ }
3040
+ }
3041
+ function resumed() {
3042
+ if (onCloseTimer) {
3043
+ // This code already ran; do not rerun.
3044
+ return;
3045
+ }
3046
+ onCloseTimer = window.setTimeout(() => {
3047
+ // Wait two seconds after resume then reject.
3048
+ reject(_createError(auth, "redirect-cancelled-by-user" /* AuthErrorCode.REDIRECT_CANCELLED_BY_USER */));
3049
+ }, REDIRECT_TIMEOUT_MS);
3050
+ }
3051
+ function visibilityChanged() {
3052
+ if (document?.visibilityState === 'visible') {
3053
+ resumed();
3054
+ }
3055
+ }
3056
+ // ATTACH ALL THE LISTENERS =====
3057
+ // Listen for the auth event
3058
+ eventListener.addPassiveListener(authEventSeen);
3059
+ // Listen for resume and visibility events
3060
+ document.addEventListener('resume', resumed, false);
3061
+ if (_isAndroid()) {
3062
+ document.addEventListener('visibilitychange', visibilityChanged, false);
3063
+ }
3064
+ // SETUP THE CLEANUP FUNCTION =====
3065
+ cleanup = () => {
3066
+ eventListener.removePassiveListener(authEventSeen);
3067
+ document.removeEventListener('resume', resumed, false);
3068
+ document.removeEventListener('visibilitychange', visibilityChanged, false);
3069
+ if (onCloseTimer) {
3070
+ window.clearTimeout(onCloseTimer);
3071
+ }
3072
+ };
3073
+ });
3074
+ }
3075
+ finally {
3076
+ cleanup();
3077
+ }
3078
+ }
3079
+ /**
3080
+ * Checks the configuration of the Cordova environment. This has no side effect
3081
+ * if the configuration is correct; otherwise it throws an error with the
3082
+ * missing plugin.
3083
+ */
3084
+ function _checkCordovaConfiguration(auth) {
3085
+ const win = _cordovaWindow();
3086
+ // Check all dependencies installed.
3087
+ // https://github.com/nordnet/cordova-universal-links-plugin
3088
+ // Note that cordova-universal-links-plugin has been abandoned.
3089
+ // A fork with latest fixes is available at:
3090
+ // https://www.npmjs.com/package/cordova-universal-links-plugin-fix
3091
+ _assert(typeof win?.universalLinks?.subscribe === 'function', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
3092
+ missingPlugin: 'cordova-universal-links-plugin-fix'
3093
+ });
3094
+ // https://www.npmjs.com/package/cordova-plugin-buildinfo
3095
+ _assert(typeof win?.BuildInfo?.packageName !== 'undefined', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
3096
+ missingPlugin: 'cordova-plugin-buildInfo'
3097
+ });
3098
+ // https://github.com/google/cordova-plugin-browsertab
3099
+ _assert(typeof win?.cordova?.plugins?.browsertab?.openUrl === 'function', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
3100
+ missingPlugin: 'cordova-plugin-browsertab'
3101
+ });
3102
+ _assert(typeof win?.cordova?.plugins?.browsertab?.isAvailable === 'function', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
3103
+ missingPlugin: 'cordova-plugin-browsertab'
3104
+ });
3105
+ // https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/
3106
+ _assert(typeof win?.cordova?.InAppBrowser?.open === 'function', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
3107
+ missingPlugin: 'cordova-plugin-inappbrowser'
3108
+ });
3109
+ }
3110
+ /**
3111
+ * Computes the SHA-256 of a session ID. The SubtleCrypto interface is only
3112
+ * available in "secure" contexts, which covers Cordova (which is served on a file
3113
+ * protocol).
3114
+ */
3115
+ async function computeSha256(sessionId) {
3116
+ const bytes = stringToArrayBuffer(sessionId);
3117
+ // TODO: For IE11 crypto has a different name and this operation comes back
3118
+ // as an object, not a promise. This is the old proposed standard that
3119
+ // is used by IE11:
3120
+ // https://www.w3.org/TR/2013/WD-WebCryptoAPI-20130108/#cryptooperation-interface
3121
+ const buf = await crypto.subtle.digest('SHA-256', bytes);
3122
+ const arr = Array.from(new Uint8Array(buf));
3123
+ return arr.map(num => num.toString(16).padStart(2, '0')).join('');
3124
+ }
3125
+ function stringToArrayBuffer(str) {
3126
+ // This function is only meant to deal with an ASCII charset and makes
3127
+ // certain simplifying assumptions.
3128
+ debugAssert(/[0-9a-zA-Z]+/.test(str), 'Can only convert alpha-numeric strings');
3129
+ if (typeof TextEncoder !== 'undefined') {
3130
+ return new TextEncoder().encode(str);
3131
+ }
3132
+ const buff = new ArrayBuffer(str.length);
3133
+ const view = new Uint8Array(buff);
3134
+ for (let i = 0; i < str.length; i++) {
3135
+ view[i] = str.charCodeAt(i);
3136
+ }
3137
+ return view;
3138
+ }
3139
+
3140
+ /**
3141
+ * @license
3142
+ * Copyright 2020 Google LLC
3143
+ *
3144
+ * Licensed under the Apache License, Version 2.0 (the "License");
3145
+ * you may not use this file except in compliance with the License.
3146
+ * You may obtain a copy of the License at
3147
+ *
3148
+ * http://www.apache.org/licenses/LICENSE-2.0
3149
+ *
3150
+ * Unless required by applicable law or agreed to in writing, software
3151
+ * distributed under the License is distributed on an "AS IS" BASIS,
3152
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3153
+ * See the License for the specific language governing permissions and
3154
+ * limitations under the License.
3155
+ */
3156
+ const SESSION_ID_LENGTH = 20;
3157
+ /** Custom AuthEventManager that adds passive listeners to events */
3158
+ class CordovaAuthEventManager extends AuthEventManager {
3159
+ constructor() {
3160
+ super(...arguments);
3161
+ this.passiveListeners = new Set();
3162
+ this.initPromise = new Promise(resolve => {
3163
+ this.resolveInitialized = resolve;
3164
+ });
3165
+ }
3166
+ addPassiveListener(cb) {
3167
+ this.passiveListeners.add(cb);
3168
+ }
3169
+ removePassiveListener(cb) {
3170
+ this.passiveListeners.delete(cb);
3171
+ }
3172
+ // In a Cordova environment, this manager can live through multiple redirect
3173
+ // operations
3174
+ resetRedirect() {
3175
+ this.queuedRedirectEvent = null;
3176
+ this.hasHandledPotentialRedirect = false;
3177
+ }
3178
+ /** Override the onEvent method */
3179
+ onEvent(event) {
3180
+ this.resolveInitialized();
3181
+ this.passiveListeners.forEach(cb => cb(event));
3182
+ return super.onEvent(event);
3183
+ }
3184
+ async initialized() {
3185
+ await this.initPromise;
3186
+ }
3187
+ }
3188
+ /**
3189
+ * Generates a (partial) {@link AuthEvent}.
3190
+ */
3191
+ function _generateNewEvent(auth, type, eventId = null) {
3192
+ return {
3193
+ type,
3194
+ eventId,
3195
+ urlResponse: null,
3196
+ sessionId: generateSessionId(),
3197
+ postBody: null,
3198
+ tenantId: auth.tenantId,
3199
+ error: _createError(auth, "no-auth-event" /* AuthErrorCode.NO_AUTH_EVENT */)
3200
+ };
3201
+ }
3202
+ function _savePartialEvent(auth, event) {
3203
+ return storage()._set(persistenceKey(auth), event);
3204
+ }
3205
+ async function _getAndRemoveEvent(auth) {
3206
+ const event = (await storage()._get(persistenceKey(auth)));
3207
+ if (event) {
3208
+ await storage()._remove(persistenceKey(auth));
3209
+ }
3210
+ return event;
3211
+ }
3212
+ function _eventFromPartialAndUrl(partialEvent, url) {
3213
+ // Parse the deep link within the dynamic link URL.
3214
+ const callbackUrl = _getDeepLinkFromCallback(url);
3215
+ // Confirm it is actually a callback URL.
3216
+ // Currently the universal link will be of this format:
3217
+ // https://<AUTH_DOMAIN>/__/auth/callback<OAUTH_RESPONSE>
3218
+ // This is a fake URL but is not intended to take the user anywhere
3219
+ // and just redirect to the app.
3220
+ if (callbackUrl.includes('/__/auth/callback')) {
3221
+ // Check if there is an error in the URL.
3222
+ // This mechanism is also used to pass errors back to the app:
3223
+ // https://<AUTH_DOMAIN>/__/auth/callback?firebaseError=<STRINGIFIED_ERROR>
3224
+ const params = searchParamsOrEmpty(callbackUrl);
3225
+ // Get the error object corresponding to the stringified error if found.
3226
+ const errorObject = params['firebaseError']
3227
+ ? parseJsonOrNull(decodeURIComponent(params['firebaseError']))
3228
+ : null;
3229
+ const code = errorObject?.['code']?.split('auth/')?.[1];
3230
+ const error = code ? _createError(code) : null;
3231
+ if (error) {
3232
+ return {
3233
+ type: partialEvent.type,
3234
+ eventId: partialEvent.eventId,
3235
+ tenantId: partialEvent.tenantId,
3236
+ error,
3237
+ urlResponse: null,
3238
+ sessionId: null,
3239
+ postBody: null
3240
+ };
3241
+ }
3242
+ else {
3243
+ return {
3244
+ type: partialEvent.type,
3245
+ eventId: partialEvent.eventId,
3246
+ tenantId: partialEvent.tenantId,
3247
+ sessionId: partialEvent.sessionId,
3248
+ urlResponse: callbackUrl,
3249
+ postBody: null
3250
+ };
3251
+ }
3252
+ }
3253
+ return null;
3254
+ }
3255
+ function generateSessionId() {
3256
+ const chars = [];
3257
+ const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
3258
+ for (let i = 0; i < SESSION_ID_LENGTH; i++) {
3259
+ const idx = Math.floor(Math.random() * allowedChars.length);
3260
+ chars.push(allowedChars.charAt(idx));
3261
+ }
3262
+ return chars.join('');
3263
+ }
3264
+ function storage() {
3265
+ return _getInstance(browserLocalPersistence);
3266
+ }
3267
+ function persistenceKey(auth) {
3268
+ return _persistenceKeyName("authEvent" /* KeyName.AUTH_EVENT */, auth.config.apiKey, auth.name);
3269
+ }
3270
+ function parseJsonOrNull(json) {
3271
+ try {
3272
+ return JSON.parse(json);
3273
+ }
3274
+ catch (e) {
3275
+ return null;
3276
+ }
3277
+ }
3278
+ // Exported for testing
3279
+ function _getDeepLinkFromCallback(url) {
3280
+ const params = searchParamsOrEmpty(url);
3281
+ const link = params['link'] ? decodeURIComponent(params['link']) : undefined;
3282
+ // Double link case (automatic redirect)
3283
+ const doubleDeepLink = searchParamsOrEmpty(link)['link'];
3284
+ // iOS custom scheme links.
3285
+ const iOSDeepLink = params['deep_link_id']
3286
+ ? decodeURIComponent(params['deep_link_id'])
3287
+ : undefined;
3288
+ const iOSDoubleDeepLink = searchParamsOrEmpty(iOSDeepLink)['link'];
3289
+ return iOSDoubleDeepLink || iOSDeepLink || doubleDeepLink || link || url;
3290
+ }
3291
+ /**
3292
+ * Optimistically tries to get search params from a string, or else returns an
3293
+ * empty search params object.
3294
+ */
3295
+ function searchParamsOrEmpty(url) {
3296
+ if (!url?.includes('?')) {
3297
+ return {};
3298
+ }
3299
+ const [_, ...rest] = url.split('?');
3300
+ return querystringDecode(rest.join('?'));
3301
+ }
3302
+
3303
+ /**
3304
+ * @license
3305
+ * Copyright 2021 Google LLC
3306
+ *
3307
+ * Licensed under the Apache License, Version 2.0 (the "License");
3308
+ * you may not use this file except in compliance with the License.
3309
+ * You may obtain a copy of the License at
3310
+ *
3311
+ * http://www.apache.org/licenses/LICENSE-2.0
3312
+ *
3313
+ * Unless required by applicable law or agreed to in writing, software
3314
+ * distributed under the License is distributed on an "AS IS" BASIS,
3315
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3316
+ * See the License for the specific language governing permissions and
3317
+ * limitations under the License.
3318
+ */
3319
+ /**
3320
+ * How long to wait for the initial auth event before concluding no
3321
+ * redirect pending
3322
+ */
3323
+ const INITIAL_EVENT_TIMEOUT_MS = 500;
3324
+ class CordovaPopupRedirectResolver {
3325
+ constructor() {
3326
+ this._redirectPersistence = browserSessionPersistence;
3327
+ this._shouldInitProactively = true; // This is lightweight for Cordova
3328
+ this.eventManagers = new Map();
3329
+ this.originValidationPromises = {};
3330
+ this._completeRedirectFn = _getRedirectResult;
3331
+ this._overrideRedirectResult = _overrideRedirectResult;
3332
+ }
3333
+ async _initialize(auth) {
3334
+ const key = auth._key();
3335
+ let manager = this.eventManagers.get(key);
3336
+ if (!manager) {
3337
+ manager = new CordovaAuthEventManager(auth);
3338
+ this.eventManagers.set(key, manager);
3339
+ this.attachCallbackListeners(auth, manager);
3340
+ }
3341
+ return manager;
3342
+ }
3343
+ _openPopup(auth) {
3344
+ _fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
3345
+ }
3346
+ async _openRedirect(auth, provider, authType, eventId) {
3347
+ _checkCordovaConfiguration(auth);
3348
+ const manager = await this._initialize(auth);
3349
+ await manager.initialized();
3350
+ // Reset the persisted redirect states. This does not matter on Web where
3351
+ // the redirect always blows away application state entirely. On Cordova,
3352
+ // the app maintains control flow through the redirect.
3353
+ manager.resetRedirect();
3354
+ _clearRedirectOutcomes();
3355
+ await this._originValidation(auth);
3356
+ const event = _generateNewEvent(auth, authType, eventId);
3357
+ await _savePartialEvent(auth, event);
3358
+ const url = await _generateHandlerUrl(auth, event, provider);
3359
+ const iabRef = await _performRedirect(url);
3360
+ return _waitForAppResume(auth, manager, iabRef);
3361
+ }
3362
+ _isIframeWebStorageSupported(_auth, _cb) {
3363
+ throw new Error('Method not implemented.');
3364
+ }
3365
+ _originValidation(auth) {
3366
+ const key = auth._key();
3367
+ if (!this.originValidationPromises[key]) {
3368
+ this.originValidationPromises[key] = _validateOrigin(auth);
3369
+ }
3370
+ return this.originValidationPromises[key];
3371
+ }
3372
+ attachCallbackListeners(auth, manager) {
3373
+ // Get the global plugins
3374
+ const { universalLinks, handleOpenURL, BuildInfo } = _cordovaWindow();
3375
+ const noEventTimeout = setTimeout(async () => {
3376
+ // We didn't see that initial event. Clear any pending object and
3377
+ // dispatch no event
3378
+ await _getAndRemoveEvent(auth);
3379
+ manager.onEvent(generateNoEvent());
3380
+ }, INITIAL_EVENT_TIMEOUT_MS);
3381
+ const universalLinksCb = async (eventData) => {
3382
+ // We have an event so we can clear the no event timeout
3383
+ clearTimeout(noEventTimeout);
3384
+ const partialEvent = await _getAndRemoveEvent(auth);
3385
+ let finalEvent = null;
3386
+ if (partialEvent && eventData?.['url']) {
3387
+ finalEvent = _eventFromPartialAndUrl(partialEvent, eventData['url']);
3388
+ }
3389
+ // If finalEvent is never filled, trigger with no event
3390
+ manager.onEvent(finalEvent || generateNoEvent());
3391
+ };
3392
+ // Universal links subscriber doesn't exist for iOS, so we need to check
3393
+ if (typeof universalLinks !== 'undefined' &&
3394
+ typeof universalLinks.subscribe === 'function') {
3395
+ universalLinks.subscribe(null, universalLinksCb);
3396
+ }
3397
+ // iOS 7 or 8 custom URL schemes.
3398
+ // This is also the current default behavior for iOS 9+.
3399
+ // For this to work, cordova-plugin-customurlscheme needs to be installed.
3400
+ // https://github.com/EddyVerbruggen/Custom-URL-scheme
3401
+ // Do not overwrite the existing developer's URL handler.
3402
+ const existingHandleOpenURL = handleOpenURL;
3403
+ const packagePrefix = `${BuildInfo.packageName.toLowerCase()}://`;
3404
+ _cordovaWindow().handleOpenURL = async (url) => {
3405
+ if (url.toLowerCase().startsWith(packagePrefix)) {
3406
+ // We want this intentionally to float
3407
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
3408
+ universalLinksCb({ url });
3409
+ }
3410
+ // Call the developer's handler if it is present.
3411
+ if (typeof existingHandleOpenURL === 'function') {
3412
+ try {
3413
+ existingHandleOpenURL(url);
3414
+ }
3415
+ catch (e) {
3416
+ // This is a developer error. Don't stop the flow of the SDK.
3417
+ console.error(e);
3418
+ }
3419
+ }
3420
+ };
3421
+ }
3422
+ }
3423
+ /**
3424
+ * An implementation of {@link PopupRedirectResolver} suitable for Cordova
3425
+ * based applications.
3426
+ *
3427
+ * @public
3428
+ */
3429
+ const cordovaPopupRedirectResolver = CordovaPopupRedirectResolver;
3430
+ function generateNoEvent() {
3431
+ return {
3432
+ type: "unknown" /* AuthEventType.UNKNOWN */,
3433
+ eventId: null,
3434
+ sessionId: null,
3435
+ urlResponse: null,
3436
+ postBody: null,
3437
+ tenantId: null,
3438
+ error: _createError("no-auth-event" /* AuthErrorCode.NO_AUTH_EVENT */)
3439
+ };
3440
+ }
3441
+
3442
+ /**
3443
+ * @license
3444
+ * Copyright 2017 Google LLC
3445
+ *
3446
+ * Licensed under the Apache License, Version 2.0 (the "License");
3447
+ * you may not use this file except in compliance with the License.
3448
+ * You may obtain a copy of the License at
3449
+ *
3450
+ * http://www.apache.org/licenses/LICENSE-2.0
3451
+ *
3452
+ * Unless required by applicable law or agreed to in writing, software
3453
+ * distributed under the License is distributed on an "AS IS" BASIS,
3454
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3455
+ * See the License for the specific language governing permissions and
3456
+ * limitations under the License.
3457
+ */
3458
+ // This function should only be called by frameworks (e.g. FirebaseUI-web) to log their usage.
3459
+ // It is not intended for direct use by developer apps. NO jsdoc here to intentionally leave it out
3460
+ // of autogenerated documentation pages to reduce accidental misuse.
3461
+ function addFrameworkForLogging(auth, framework) {
3462
+ _castAuth(auth)._logFramework(framework);
3463
+ }
3464
+
3465
+ export { ActionCodeOperation, AuthPopup, FactorId, OperationType, PhoneAuthProvider, PhoneMultiFactorGenerator, ProviderId, RecaptchaVerifier, SignInMethod, _getRedirectResult, _overrideRedirectResult, addFrameworkForLogging, browserCookiePersistence, browserLocalPersistence, browserPopupRedirectResolver, browserSessionPersistence, cordovaPopupRedirectResolver, getAuth, getRedirectResult, linkWithPhoneNumber, linkWithPopup, linkWithRedirect, reauthenticateWithPhoneNumber, reauthenticateWithPopup, reauthenticateWithRedirect, signInWithPhoneNumber, signInWithPopup, signInWithRedirect, updatePhoneNumber };
3466
+ //# sourceMappingURL=internal.js.map