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