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