@firebase/auth 0.21.1 → 0.21.2-20230131204242

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 (329) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/auth-public.d.ts +8 -4
  3. package/dist/auth.d.ts +8 -4
  4. package/dist/browser-cjs/index-888931f8.js +9642 -0
  5. package/dist/browser-cjs/index-888931f8.js.map +1 -0
  6. package/dist/browser-cjs/index.cordova.d.ts +32 -0
  7. package/dist/browser-cjs/index.d.ts +36 -0
  8. package/dist/browser-cjs/index.doc.d.ts +24 -0
  9. package/dist/browser-cjs/index.js +93 -0
  10. package/dist/browser-cjs/index.js.map +1 -0
  11. package/dist/browser-cjs/index.node.d.ts +17 -0
  12. package/dist/browser-cjs/index.rn.d.ts +32 -0
  13. package/dist/browser-cjs/index.shared.d.ts +19 -0
  14. package/dist/browser-cjs/index.webworker.d.ts +21 -0
  15. package/dist/browser-cjs/internal/index.d.ts +42 -0
  16. package/dist/browser-cjs/internal.js +667 -0
  17. package/dist/browser-cjs/internal.js.map +1 -0
  18. package/dist/browser-cjs/scripts/run_node_tests.d.ts +17 -0
  19. package/dist/browser-cjs/src/api/account_management/account.d.ts +59 -0
  20. package/dist/browser-cjs/src/api/account_management/account.test.d.ts +17 -0
  21. package/dist/browser-cjs/src/api/account_management/email_and_password.d.ts +47 -0
  22. package/dist/browser-cjs/src/api/account_management/email_and_password.test.d.ts +17 -0
  23. package/dist/browser-cjs/src/api/account_management/mfa.d.ts +69 -0
  24. package/dist/browser-cjs/src/api/account_management/mfa.test.d.ts +17 -0
  25. package/dist/browser-cjs/src/api/account_management/profile.d.ts +29 -0
  26. package/dist/browser-cjs/src/api/account_management/profile.test.d.ts +17 -0
  27. package/dist/browser-cjs/src/api/authentication/create_auth_uri.d.ts +26 -0
  28. package/dist/browser-cjs/src/api/authentication/create_auth_uri.test.d.ts +17 -0
  29. package/dist/browser-cjs/src/api/authentication/custom_token.d.ts +26 -0
  30. package/dist/browser-cjs/src/api/authentication/custom_token.test.d.ts +17 -0
  31. package/dist/browser-cjs/src/api/authentication/email_and_password.d.ts +76 -0
  32. package/dist/browser-cjs/src/api/authentication/email_and_password.test.d.ts +17 -0
  33. package/dist/browser-cjs/src/api/authentication/email_link.d.ts +32 -0
  34. package/dist/browser-cjs/src/api/authentication/email_link.test.d.ts +17 -0
  35. package/dist/browser-cjs/src/api/authentication/idp.d.ts +40 -0
  36. package/dist/browser-cjs/src/api/authentication/idp.test.d.ts +17 -0
  37. package/dist/browser-cjs/src/api/authentication/mfa.d.ts +58 -0
  38. package/dist/browser-cjs/src/api/authentication/mfa.test.d.ts +17 -0
  39. package/dist/browser-cjs/src/api/authentication/recaptcha.d.ts +18 -0
  40. package/dist/browser-cjs/src/api/authentication/recaptcha.test.d.ts +17 -0
  41. package/dist/browser-cjs/src/api/authentication/sign_up.d.ts +29 -0
  42. package/dist/browser-cjs/src/api/authentication/sign_up.test.d.ts +17 -0
  43. package/dist/browser-cjs/src/api/authentication/sms.d.ts +50 -0
  44. package/dist/browser-cjs/src/api/authentication/sms.test.d.ts +17 -0
  45. package/dist/browser-cjs/src/api/authentication/token.d.ts +26 -0
  46. package/dist/browser-cjs/src/api/authentication/token.test.d.ts +17 -0
  47. package/dist/browser-cjs/src/api/errors.d.ts +118 -0
  48. package/dist/browser-cjs/src/api/index.d.ts +69 -0
  49. package/dist/browser-cjs/src/api/index.test.d.ts +17 -0
  50. package/dist/browser-cjs/src/api/project_config/get_project_config.d.ts +25 -0
  51. package/dist/browser-cjs/src/api/project_config/get_project_config.test.d.ts +17 -0
  52. package/dist/browser-cjs/src/core/action_code_url.d.ts +73 -0
  53. package/dist/browser-cjs/src/core/action_code_url.test.d.ts +17 -0
  54. package/dist/browser-cjs/src/core/auth/auth_event_manager.d.ts +34 -0
  55. package/dist/browser-cjs/src/core/auth/auth_event_manager.test.d.ts +17 -0
  56. package/dist/browser-cjs/src/core/auth/auth_impl.d.ts +110 -0
  57. package/dist/browser-cjs/src/core/auth/auth_impl.test.d.ts +17 -0
  58. package/dist/browser-cjs/src/core/auth/emulator.d.ts +42 -0
  59. package/dist/browser-cjs/src/core/auth/emulator.test.d.ts +17 -0
  60. package/dist/browser-cjs/src/core/auth/firebase_internal.d.ts +35 -0
  61. package/dist/browser-cjs/src/core/auth/firebase_internal.test.d.ts +17 -0
  62. package/dist/browser-cjs/src/core/auth/initialize.d.ts +46 -0
  63. package/dist/browser-cjs/src/core/auth/initialize.test.d.ts +17 -0
  64. package/dist/browser-cjs/src/core/auth/middleware.d.ts +25 -0
  65. package/dist/browser-cjs/src/core/auth/middleware.test.d.ts +17 -0
  66. package/dist/browser-cjs/src/core/auth/register.d.ts +23 -0
  67. package/dist/browser-cjs/src/core/credentials/auth_credential.d.ts +75 -0
  68. package/dist/browser-cjs/src/core/credentials/email.d.ts +60 -0
  69. package/dist/browser-cjs/src/core/credentials/email.test.d.ts +17 -0
  70. package/dist/browser-cjs/src/core/credentials/index.d.ts +23 -0
  71. package/dist/browser-cjs/src/core/credentials/oauth.d.ts +81 -0
  72. package/dist/browser-cjs/src/core/credentials/oauth.test.d.ts +17 -0
  73. package/dist/browser-cjs/src/core/credentials/phone.d.ts +52 -0
  74. package/dist/browser-cjs/src/core/credentials/phone.test.d.ts +17 -0
  75. package/dist/browser-cjs/src/core/credentials/saml.d.ts +52 -0
  76. package/dist/browser-cjs/src/core/credentials/saml.test.d.ts +17 -0
  77. package/dist/browser-cjs/src/core/errors.d.ts +305 -0
  78. package/dist/browser-cjs/src/core/errors.test.d.ts +17 -0
  79. package/dist/browser-cjs/src/core/index.d.ts +158 -0
  80. package/dist/browser-cjs/src/core/persistence/in_memory.d.ts +35 -0
  81. package/dist/browser-cjs/src/core/persistence/in_memory.test.d.ts +17 -0
  82. package/dist/browser-cjs/src/core/persistence/index.d.ts +41 -0
  83. package/dist/browser-cjs/src/core/persistence/persistence_user_manager.d.ts +45 -0
  84. package/dist/browser-cjs/src/core/persistence/persistence_user_manager.test.d.ts +17 -0
  85. package/dist/browser-cjs/src/core/providers/email.d.ts +83 -0
  86. package/dist/browser-cjs/src/core/providers/email.test.d.ts +17 -0
  87. package/dist/browser-cjs/src/core/providers/facebook.d.ts +93 -0
  88. package/dist/browser-cjs/src/core/providers/facebook.test.d.ts +17 -0
  89. package/dist/browser-cjs/src/core/providers/federated.d.ts +64 -0
  90. package/dist/browser-cjs/src/core/providers/federated.test.d.ts +17 -0
  91. package/dist/browser-cjs/src/core/providers/github.d.ts +89 -0
  92. package/dist/browser-cjs/src/core/providers/github.test.d.ts +17 -0
  93. package/dist/browser-cjs/src/core/providers/google.d.ts +96 -0
  94. package/dist/browser-cjs/src/core/providers/google.test.d.ts +17 -0
  95. package/dist/browser-cjs/src/core/providers/oauth.d.ts +151 -0
  96. package/dist/browser-cjs/src/core/providers/oauth.test.d.ts +17 -0
  97. package/dist/browser-cjs/src/core/providers/saml.d.ts +62 -0
  98. package/dist/browser-cjs/src/core/providers/saml.test.d.ts +17 -0
  99. package/dist/browser-cjs/src/core/providers/twitter.d.ts +103 -0
  100. package/dist/browser-cjs/src/core/providers/twitter.test.d.ts +17 -0
  101. package/dist/browser-cjs/src/core/strategies/abstract_popup_redirect_operation.d.ts +44 -0
  102. package/dist/browser-cjs/src/core/strategies/abstract_popup_redirect_operation.test.d.ts +17 -0
  103. package/dist/browser-cjs/src/core/strategies/action_code_settings.d.ts +19 -0
  104. package/dist/browser-cjs/src/core/strategies/action_code_settings.test.d.ts +17 -0
  105. package/dist/browser-cjs/src/core/strategies/anonymous.d.ts +29 -0
  106. package/dist/browser-cjs/src/core/strategies/anonymous.test.d.ts +17 -0
  107. package/dist/browser-cjs/src/core/strategies/credential.d.ts +58 -0
  108. package/dist/browser-cjs/src/core/strategies/credential.test.d.ts +17 -0
  109. package/dist/browser-cjs/src/core/strategies/custom_token.d.ts +34 -0
  110. package/dist/browser-cjs/src/core/strategies/custom_token.test.d.ts +17 -0
  111. package/dist/browser-cjs/src/core/strategies/email.d.ts +98 -0
  112. package/dist/browser-cjs/src/core/strategies/email.test.d.ts +17 -0
  113. package/dist/browser-cjs/src/core/strategies/email_and_password.d.ts +126 -0
  114. package/dist/browser-cjs/src/core/strategies/email_and_password.test.d.ts +17 -0
  115. package/dist/browser-cjs/src/core/strategies/email_link.d.ts +103 -0
  116. package/dist/browser-cjs/src/core/strategies/email_link.test.d.ts +17 -0
  117. package/dist/browser-cjs/src/core/strategies/idp.d.ts +32 -0
  118. package/dist/browser-cjs/src/core/strategies/idp.test.d.ts +17 -0
  119. package/dist/browser-cjs/src/core/strategies/redirect.d.ts +36 -0
  120. package/dist/browser-cjs/src/core/strategies/redirect.test.d.ts +17 -0
  121. package/dist/browser-cjs/src/core/user/account_info.d.ts +60 -0
  122. package/dist/browser-cjs/src/core/user/account_info.test.d.ts +17 -0
  123. package/dist/browser-cjs/src/core/user/additional_user_info.d.ts +31 -0
  124. package/dist/browser-cjs/src/core/user/additional_user_info.test.d.ts +17 -0
  125. package/dist/browser-cjs/src/core/user/id_token_result.d.ts +48 -0
  126. package/dist/browser-cjs/src/core/user/id_token_result.test.d.ts +17 -0
  127. package/dist/browser-cjs/src/core/user/invalidation.d.ts +18 -0
  128. package/dist/browser-cjs/src/core/user/invalidation.test.d.ts +17 -0
  129. package/dist/browser-cjs/src/core/user/link_unlink.d.ts +30 -0
  130. package/dist/browser-cjs/src/core/user/link_unlink.test.d.ts +17 -0
  131. package/dist/browser-cjs/src/core/user/proactive_refresh.d.ts +34 -0
  132. package/dist/browser-cjs/src/core/user/proactive_refresh.test.d.ts +17 -0
  133. package/dist/browser-cjs/src/core/user/reauthenticate.d.ts +20 -0
  134. package/dist/browser-cjs/src/core/user/reauthenticate.test.d.ts +17 -0
  135. package/dist/browser-cjs/src/core/user/reload.d.ts +27 -0
  136. package/dist/browser-cjs/src/core/user/reload.test.d.ts +17 -0
  137. package/dist/browser-cjs/src/core/user/token_manager.d.ts +49 -0
  138. package/dist/browser-cjs/src/core/user/token_manager.test.d.ts +17 -0
  139. package/dist/browser-cjs/src/core/user/user_credential_impl.d.ts +37 -0
  140. package/dist/browser-cjs/src/core/user/user_credential_impl.test.d.ts +17 -0
  141. package/dist/browser-cjs/src/core/user/user_impl.d.ts +68 -0
  142. package/dist/browser-cjs/src/core/user/user_impl.test.d.ts +17 -0
  143. package/dist/browser-cjs/src/core/user/user_metadata.d.ts +27 -0
  144. package/dist/browser-cjs/src/core/util/assert.d.ts +93 -0
  145. package/dist/browser-cjs/src/core/util/assert.test.d.ts +17 -0
  146. package/dist/browser-cjs/src/core/util/browser.d.ts +50 -0
  147. package/dist/browser-cjs/src/core/util/browser.test.d.ts +17 -0
  148. package/dist/browser-cjs/src/core/util/delay.d.ts +31 -0
  149. package/dist/browser-cjs/src/core/util/delay.test.d.ts +17 -0
  150. package/dist/browser-cjs/src/core/util/emulator.d.ts +18 -0
  151. package/dist/browser-cjs/src/core/util/emulator.test.d.ts +17 -0
  152. package/dist/browser-cjs/src/core/util/event_id.d.ts +17 -0
  153. package/dist/browser-cjs/src/core/util/event_id.test.d.ts +17 -0
  154. package/dist/browser-cjs/src/core/util/fetch_provider.d.ts +25 -0
  155. package/dist/browser-cjs/src/core/util/handler.d.ts +20 -0
  156. package/dist/browser-cjs/src/core/util/instantiator.d.ts +28 -0
  157. package/dist/browser-cjs/src/core/util/instantiator.test.d.ts +17 -0
  158. package/dist/browser-cjs/src/core/util/location.d.ts +19 -0
  159. package/dist/browser-cjs/src/core/util/log.d.ts +22 -0
  160. package/dist/browser-cjs/src/core/util/navigator.d.ts +21 -0
  161. package/dist/browser-cjs/src/core/util/providers.d.ts +23 -0
  162. package/dist/browser-cjs/src/core/util/resolver.d.ts +25 -0
  163. package/dist/browser-cjs/src/core/util/time.d.ts +17 -0
  164. package/dist/browser-cjs/src/core/util/validate_origin.d.ts +18 -0
  165. package/dist/browser-cjs/src/core/util/validate_origin.test.d.ts +17 -0
  166. package/dist/browser-cjs/src/core/util/version.d.ts +30 -0
  167. package/dist/browser-cjs/src/core/util/version.test.d.ts +17 -0
  168. package/dist/browser-cjs/src/index.d.ts +18 -0
  169. package/dist/browser-cjs/src/mfa/index.d.ts +18 -0
  170. package/dist/browser-cjs/src/mfa/mfa_assertion.d.ts +27 -0
  171. package/dist/browser-cjs/src/mfa/mfa_error.d.ts +35 -0
  172. package/dist/browser-cjs/src/mfa/mfa_info.d.ts +32 -0
  173. package/dist/browser-cjs/src/mfa/mfa_info.test.d.ts +17 -0
  174. package/dist/browser-cjs/src/mfa/mfa_resolver.d.ts +41 -0
  175. package/dist/browser-cjs/src/mfa/mfa_resolver.test.d.ts +17 -0
  176. package/dist/browser-cjs/src/mfa/mfa_session.d.ts +39 -0
  177. package/dist/browser-cjs/src/mfa/mfa_session.test.d.ts +17 -0
  178. package/dist/browser-cjs/src/mfa/mfa_user.d.ts +38 -0
  179. package/dist/browser-cjs/src/mfa/mfa_user.test.d.ts +17 -0
  180. package/dist/browser-cjs/src/model/application_verifier.d.ts +23 -0
  181. package/dist/browser-cjs/src/model/auth.d.ts +75 -0
  182. package/dist/browser-cjs/src/model/enum_maps.d.ts +97 -0
  183. package/dist/browser-cjs/src/model/enums.d.ts +74 -0
  184. package/dist/browser-cjs/src/model/id_token.d.ts +87 -0
  185. package/dist/browser-cjs/src/model/popup_redirect.d.ts +94 -0
  186. package/dist/browser-cjs/src/model/public_types.d.ts +1162 -0
  187. package/dist/browser-cjs/src/model/user.d.ts +83 -0
  188. package/dist/browser-cjs/src/platform_browser/auth.test.d.ts +17 -0
  189. package/dist/browser-cjs/src/platform_browser/auth_window.d.ts +37 -0
  190. package/dist/browser-cjs/src/platform_browser/iframe/gapi.d.ts +19 -0
  191. package/dist/browser-cjs/src/platform_browser/iframe/gapi.iframes.d.ts +47 -0
  192. package/dist/browser-cjs/src/platform_browser/iframe/gapi.test.d.ts +17 -0
  193. package/dist/browser-cjs/src/platform_browser/iframe/iframe.d.ts +18 -0
  194. package/dist/browser-cjs/src/platform_browser/iframe/iframe.test.d.ts +17 -0
  195. package/dist/browser-cjs/src/platform_browser/index.d.ts +27 -0
  196. package/dist/browser-cjs/src/platform_browser/load_js.d.ts +18 -0
  197. package/dist/browser-cjs/src/platform_browser/load_js.test.d.ts +17 -0
  198. package/dist/browser-cjs/src/platform_browser/messagechannel/index.d.ts +87 -0
  199. package/dist/browser-cjs/src/platform_browser/messagechannel/promise.d.ts +33 -0
  200. package/dist/browser-cjs/src/platform_browser/messagechannel/promise.test.d.ts +17 -0
  201. package/dist/browser-cjs/src/platform_browser/messagechannel/receiver.d.ts +63 -0
  202. package/dist/browser-cjs/src/platform_browser/messagechannel/receiver.test.d.ts +17 -0
  203. package/dist/browser-cjs/src/platform_browser/messagechannel/sender.d.ts +46 -0
  204. package/dist/browser-cjs/src/platform_browser/messagechannel/sender.test.d.ts +17 -0
  205. package/dist/browser-cjs/src/platform_browser/mfa/assertions/phone.d.ts +56 -0
  206. package/dist/browser-cjs/src/platform_browser/mfa/assertions/phone.test.d.ts +17 -0
  207. package/dist/browser-cjs/src/platform_browser/persistence/browser.d.ts +27 -0
  208. package/dist/browser-cjs/src/platform_browser/persistence/browser.test.d.ts +17 -0
  209. package/dist/browser-cjs/src/platform_browser/persistence/indexed_db.d.ts +33 -0
  210. package/dist/browser-cjs/src/platform_browser/persistence/indexed_db.test.d.ts +17 -0
  211. package/dist/browser-cjs/src/platform_browser/persistence/local_storage.d.ts +25 -0
  212. package/dist/browser-cjs/src/platform_browser/persistence/local_storage.test.d.ts +17 -0
  213. package/dist/browser-cjs/src/platform_browser/persistence/session_storage.d.ts +24 -0
  214. package/dist/browser-cjs/src/platform_browser/persistence/session_storage.test.d.ts +17 -0
  215. package/dist/browser-cjs/src/platform_browser/popup_redirect.d.ts +24 -0
  216. package/dist/browser-cjs/src/platform_browser/popup_redirect.test.d.ts +17 -0
  217. package/dist/browser-cjs/src/platform_browser/providers/phone.d.ts +149 -0
  218. package/dist/browser-cjs/src/platform_browser/providers/phone.test.d.ts +17 -0
  219. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +23 -0
  220. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_loader.d.ts +49 -0
  221. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_loader.test.d.ts +17 -0
  222. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_mock.d.ts +51 -0
  223. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_mock.test.d.ts +17 -0
  224. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +90 -0
  225. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_verifier.test.d.ts +17 -0
  226. package/dist/browser-cjs/src/platform_browser/strategies/phone.d.ts +98 -0
  227. package/dist/browser-cjs/src/platform_browser/strategies/phone.test.d.ts +17 -0
  228. package/dist/browser-cjs/src/platform_browser/strategies/popup.d.ts +103 -0
  229. package/dist/browser-cjs/src/platform_browser/strategies/popup.test.d.ts +17 -0
  230. package/dist/browser-cjs/src/platform_browser/strategies/redirect.d.ts +165 -0
  231. package/dist/browser-cjs/src/platform_browser/strategies/redirect.test.d.ts +17 -0
  232. package/dist/browser-cjs/src/platform_browser/util/popup.d.ts +24 -0
  233. package/dist/browser-cjs/src/platform_browser/util/popup.test.d.ts +17 -0
  234. package/dist/browser-cjs/src/platform_browser/util/worker.d.ts +20 -0
  235. package/dist/browser-cjs/src/platform_cordova/plugins.d.ts +42 -0
  236. package/dist/browser-cjs/src/platform_cordova/popup_redirect/events.d.ts +39 -0
  237. package/dist/browser-cjs/src/platform_cordova/popup_redirect/events.test.d.ts +17 -0
  238. package/dist/browser-cjs/src/platform_cordova/popup_redirect/popup_redirect.d.ts +24 -0
  239. package/dist/browser-cjs/src/platform_cordova/popup_redirect/popup_redirect.test.d.ts +17 -0
  240. package/dist/browser-cjs/src/platform_cordova/popup_redirect/utils.d.ts +47 -0
  241. package/dist/browser-cjs/src/platform_cordova/popup_redirect/utils.test.d.ts +17 -0
  242. package/dist/browser-cjs/src/platform_cordova/strategies/redirect.d.ts +20 -0
  243. package/dist/browser-cjs/src/platform_node/index.d.ts +49 -0
  244. package/dist/browser-cjs/src/platform_react_native/persistence/react_native.d.ts +25 -0
  245. package/dist/browser-cjs/src/platform_react_native/persistence/react_native.test.d.ts +17 -0
  246. package/dist/browser-cjs/test/helpers/api/helper.d.ts +20 -0
  247. package/dist/browser-cjs/test/helpers/delay.d.ts +20 -0
  248. package/dist/browser-cjs/test/helpers/erroring_unavailable_persistence.d.ts +36 -0
  249. package/dist/browser-cjs/test/helpers/fake_service_worker.d.ts +22 -0
  250. package/dist/browser-cjs/test/helpers/id_token_response.d.ts +18 -0
  251. package/dist/browser-cjs/test/helpers/iframe_event.d.ts +19 -0
  252. package/dist/browser-cjs/test/helpers/integration/emulator_rest_helpers.d.ts +35 -0
  253. package/dist/browser-cjs/test/helpers/integration/helpers.d.ts +20 -0
  254. package/dist/browser-cjs/test/helpers/integration/settings.d.ts +23 -0
  255. package/dist/browser-cjs/test/helpers/jwt.d.ts +17 -0
  256. package/dist/browser-cjs/test/helpers/mock_auth.d.ts +42 -0
  257. package/dist/browser-cjs/test/helpers/mock_auth_credential.d.ts +31 -0
  258. package/dist/browser-cjs/test/helpers/mock_fetch.d.ts +30 -0
  259. package/dist/browser-cjs/test/helpers/mock_fetch.test.d.ts +17 -0
  260. package/dist/browser-cjs/test/helpers/mock_popup_redirect_resolver.d.ts +24 -0
  261. package/dist/browser-cjs/test/helpers/redirect_persistence.d.ts +24 -0
  262. package/dist/browser-cjs/test/helpers/timeout_stub.d.ts +34 -0
  263. package/dist/browser-cjs/test/integration/flows/anonymous.test.d.ts +17 -0
  264. package/dist/browser-cjs/test/integration/flows/custom.local.test.d.ts +17 -0
  265. package/dist/browser-cjs/test/integration/flows/email.test.d.ts +17 -0
  266. package/dist/browser-cjs/test/integration/flows/idp.local.test.d.ts +17 -0
  267. package/dist/browser-cjs/test/integration/flows/middleware_test_generator.d.ts +18 -0
  268. package/dist/browser-cjs/test/integration/flows/oob.local.test.d.ts +17 -0
  269. package/dist/browser-cjs/test/integration/flows/phone.test.d.ts +17 -0
  270. package/dist/browser-cjs/test/integration/webdriver/anonymous.test.d.ts +17 -0
  271. package/dist/browser-cjs/test/integration/webdriver/compat/firebaseui.test.d.ts +17 -0
  272. package/dist/browser-cjs/test/integration/webdriver/persistence.test.d.ts +17 -0
  273. package/dist/browser-cjs/test/integration/webdriver/popup.test.d.ts +17 -0
  274. package/dist/browser-cjs/test/integration/webdriver/redirect.test.d.ts +17 -0
  275. package/dist/browser-cjs/test/integration/webdriver/util/auth_driver.d.ts +46 -0
  276. package/dist/browser-cjs/test/integration/webdriver/util/functions.d.ts +81 -0
  277. package/dist/browser-cjs/test/integration/webdriver/util/idp_page.d.ts +31 -0
  278. package/dist/browser-cjs/test/integration/webdriver/util/js_load_condition.d.ts +25 -0
  279. package/dist/browser-cjs/test/integration/webdriver/util/test_runner.d.ts +19 -0
  280. package/dist/browser-cjs/test/integration/webdriver/util/test_server.d.ts +27 -0
  281. package/dist/browser-cjs/test/integration/webdriver/util/ui_page.d.ts +33 -0
  282. package/dist/cordova/index.js +2 -2
  283. package/dist/cordova/internal.js +2 -2
  284. package/dist/cordova/{popup_redirect-f2a91123.js → popup_redirect-e3f41047.js} +16 -15
  285. package/dist/cordova/popup_redirect-e3f41047.js.map +1 -0
  286. package/dist/cordova/src/core/strategies/credential.d.ts +2 -1
  287. package/dist/cordova/src/platform_browser/strategies/redirect.d.ts +6 -3
  288. package/dist/esm2017/{index-e5b3cc81.js → index-ad92feb8.js} +22 -20
  289. package/dist/esm2017/index-ad92feb8.js.map +1 -0
  290. package/dist/esm2017/index.js +1 -1
  291. package/dist/esm2017/internal.js +2 -2
  292. package/dist/esm2017/src/core/strategies/credential.d.ts +2 -1
  293. package/dist/esm2017/src/platform_browser/strategies/redirect.d.ts +6 -3
  294. package/dist/esm5/{index-624a9c08.js → index-b011a244.js} +16 -15
  295. package/dist/esm5/index-b011a244.js.map +1 -0
  296. package/dist/esm5/index.js +1 -1
  297. package/dist/esm5/internal.js +2 -2
  298. package/dist/esm5/src/core/strategies/credential.d.ts +2 -1
  299. package/dist/esm5/src/platform_browser/strategies/redirect.d.ts +6 -3
  300. package/dist/index.webworker.esm5.js +9 -11
  301. package/dist/index.webworker.esm5.js.map +1 -1
  302. package/dist/node/{index-69e083b1.js → index-07d4f473.js} +10 -12
  303. package/dist/node/{index-69e083b1.js.map → index-07d4f473.js.map} +1 -1
  304. package/dist/node/index.js +1 -1
  305. package/dist/node/internal.js +1 -1
  306. package/dist/node/internal.js.map +1 -1
  307. package/dist/node/src/core/strategies/credential.d.ts +2 -1
  308. package/dist/node/src/platform_browser/strategies/redirect.d.ts +6 -3
  309. package/dist/node-esm/{index-67ff6dfa.js → index-0d69afd8.js} +16 -17
  310. package/dist/node-esm/{index-67ff6dfa.js.map → index-0d69afd8.js.map} +1 -1
  311. package/dist/node-esm/index.js +1 -1
  312. package/dist/node-esm/internal.js +2 -2
  313. package/dist/node-esm/internal.js.map +1 -1
  314. package/dist/node-esm/src/core/strategies/credential.d.ts +2 -1
  315. package/dist/node-esm/src/platform_browser/strategies/redirect.d.ts +6 -3
  316. package/dist/rn/index.js +1 -1
  317. package/dist/rn/internal.js +7 -4
  318. package/dist/rn/internal.js.map +1 -1
  319. package/dist/rn/{phone-ec5655af.js → phone-92601072.js} +10 -12
  320. package/dist/rn/phone-92601072.js.map +1 -0
  321. package/dist/rn/src/core/strategies/credential.d.ts +2 -1
  322. package/dist/rn/src/platform_browser/strategies/redirect.d.ts +6 -3
  323. package/dist/src/core/strategies/credential.d.ts +2 -1
  324. package/dist/src/platform_browser/strategies/redirect.d.ts +6 -3
  325. package/package.json +15 -7
  326. package/dist/cordova/popup_redirect-f2a91123.js.map +0 -1
  327. package/dist/esm2017/index-e5b3cc81.js.map +0 -1
  328. package/dist/esm5/index-624a9c08.js.map +0 -1
  329. package/dist/rn/phone-ec5655af.js.map +0 -1
@@ -0,0 +1,667 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var index = require('./index-888931f8.js');
6
+ var util = require('@firebase/util');
7
+ require('@firebase/app');
8
+ require('@firebase/logger');
9
+ require('tslib');
10
+ require('@firebase/component');
11
+
12
+ /**
13
+ * @license
14
+ * Copyright 2021 Google LLC
15
+ *
16
+ * Licensed under the Apache License, Version 2.0 (the "License");
17
+ * you may not use this file except in compliance with the License.
18
+ * You may obtain a copy of the License at
19
+ *
20
+ * http://www.apache.org/licenses/LICENSE-2.0
21
+ *
22
+ * Unless required by applicable law or agreed to in writing, software
23
+ * distributed under the License is distributed on an "AS IS" BASIS,
24
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
25
+ * See the License for the specific language governing permissions and
26
+ * limitations under the License.
27
+ */
28
+ function _cordovaWindow() {
29
+ return window;
30
+ }
31
+
32
+ /**
33
+ * @license
34
+ * Copyright 2020 Google LLC
35
+ *
36
+ * Licensed under the Apache License, Version 2.0 (the "License");
37
+ * you may not use this file except in compliance with the License.
38
+ * You may obtain a copy of the License at
39
+ *
40
+ * http://www.apache.org/licenses/LICENSE-2.0
41
+ *
42
+ * Unless required by applicable law or agreed to in writing, software
43
+ * distributed under the License is distributed on an "AS IS" BASIS,
44
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45
+ * See the License for the specific language governing permissions and
46
+ * limitations under the License.
47
+ */
48
+ /**
49
+ * How long to wait after the app comes back into focus before concluding that
50
+ * the user closed the sign in tab.
51
+ */
52
+ const REDIRECT_TIMEOUT_MS = 2000;
53
+ /**
54
+ * Generates the URL for the OAuth handler.
55
+ */
56
+ async function _generateHandlerUrl(auth, event, provider) {
57
+ var _a;
58
+ // Get the cordova plugins
59
+ const { BuildInfo } = _cordovaWindow();
60
+ index.debugAssert(event.sessionId, 'AuthEvent did not contain a session ID');
61
+ const sessionDigest = await computeSha256(event.sessionId);
62
+ const additionalParams = {};
63
+ if (index._isIOS()) {
64
+ // iOS app identifier
65
+ additionalParams['ibi'] = BuildInfo.packageName;
66
+ }
67
+ else if (index._isAndroid()) {
68
+ // Android app identifier
69
+ additionalParams['apn'] = BuildInfo.packageName;
70
+ }
71
+ else {
72
+ index._fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
73
+ }
74
+ // Add the display name if available
75
+ if (BuildInfo.displayName) {
76
+ additionalParams['appDisplayName'] = BuildInfo.displayName;
77
+ }
78
+ // Attached the hashed session ID
79
+ additionalParams['sessionId'] = sessionDigest;
80
+ return index._getRedirectUrl(auth, provider, event.type, undefined, (_a = event.eventId) !== null && _a !== void 0 ? _a : undefined, additionalParams);
81
+ }
82
+ /**
83
+ * Validates that this app is valid for this project configuration
84
+ */
85
+ async function _validateOrigin(auth) {
86
+ const { BuildInfo } = _cordovaWindow();
87
+ const request = {};
88
+ if (index._isIOS()) {
89
+ request.iosBundleId = BuildInfo.packageName;
90
+ }
91
+ else if (index._isAndroid()) {
92
+ request.androidPackageName = BuildInfo.packageName;
93
+ }
94
+ else {
95
+ index._fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
96
+ }
97
+ // Will fail automatically if package name is not authorized
98
+ await index._getProjectConfig(auth, request);
99
+ }
100
+ function _performRedirect(handlerUrl) {
101
+ // Get the cordova plugins
102
+ const { cordova } = _cordovaWindow();
103
+ return new Promise(resolve => {
104
+ cordova.plugins.browsertab.isAvailable(browserTabIsAvailable => {
105
+ let iabRef = null;
106
+ if (browserTabIsAvailable) {
107
+ cordova.plugins.browsertab.openUrl(handlerUrl);
108
+ }
109
+ else {
110
+ // TODO: Return the inappbrowser ref that's returned from the open call
111
+ iabRef = cordova.InAppBrowser.open(handlerUrl, index._isIOS7Or8() ? '_blank' : '_system', 'location=yes');
112
+ }
113
+ resolve(iabRef);
114
+ });
115
+ });
116
+ }
117
+ /**
118
+ * This function waits for app activity to be seen before resolving. It does
119
+ * this by attaching listeners to various dom events. Once the app is determined
120
+ * to be visible, this promise resolves. AFTER that resolution, the listeners
121
+ * are detached and any browser tabs left open will be closed.
122
+ */
123
+ async function _waitForAppResume(auth, eventListener, iabRef) {
124
+ // Get the cordova plugins
125
+ const { cordova } = _cordovaWindow();
126
+ let cleanup = () => { };
127
+ try {
128
+ await new Promise((resolve, reject) => {
129
+ let onCloseTimer = null;
130
+ // DEFINE ALL THE CALLBACKS =====
131
+ function authEventSeen() {
132
+ var _a;
133
+ // Auth event was detected. Resolve this promise and close the extra
134
+ // window if it's still open.
135
+ resolve();
136
+ const closeBrowserTab = (_a = cordova.plugins.browsertab) === null || _a === void 0 ? void 0 : _a.close;
137
+ if (typeof closeBrowserTab === 'function') {
138
+ closeBrowserTab();
139
+ }
140
+ // Close inappbrowser emebedded webview in iOS7 and 8 case if still
141
+ // open.
142
+ if (typeof (iabRef === null || iabRef === void 0 ? void 0 : iabRef.close) === 'function') {
143
+ iabRef.close();
144
+ }
145
+ }
146
+ function resumed() {
147
+ if (onCloseTimer) {
148
+ // This code already ran; do not rerun.
149
+ return;
150
+ }
151
+ onCloseTimer = window.setTimeout(() => {
152
+ // Wait two seeconds after resume then reject.
153
+ reject(index._createError(auth, "redirect-cancelled-by-user" /* AuthErrorCode.REDIRECT_CANCELLED_BY_USER */));
154
+ }, REDIRECT_TIMEOUT_MS);
155
+ }
156
+ function visibilityChanged() {
157
+ if ((document === null || document === void 0 ? void 0 : document.visibilityState) === 'visible') {
158
+ resumed();
159
+ }
160
+ }
161
+ // ATTACH ALL THE LISTENERS =====
162
+ // Listen for the auth event
163
+ eventListener.addPassiveListener(authEventSeen);
164
+ // Listen for resume and visibility events
165
+ document.addEventListener('resume', resumed, false);
166
+ if (index._isAndroid()) {
167
+ document.addEventListener('visibilitychange', visibilityChanged, false);
168
+ }
169
+ // SETUP THE CLEANUP FUNCTION =====
170
+ cleanup = () => {
171
+ eventListener.removePassiveListener(authEventSeen);
172
+ document.removeEventListener('resume', resumed, false);
173
+ document.removeEventListener('visibilitychange', visibilityChanged, false);
174
+ if (onCloseTimer) {
175
+ window.clearTimeout(onCloseTimer);
176
+ }
177
+ };
178
+ });
179
+ }
180
+ finally {
181
+ cleanup();
182
+ }
183
+ }
184
+ /**
185
+ * Checks the configuration of the Cordova environment. This has no side effect
186
+ * if the configuration is correct; otherwise it throws an error with the
187
+ * missing plugin.
188
+ */
189
+ function _checkCordovaConfiguration(auth) {
190
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
191
+ const win = _cordovaWindow();
192
+ // Check all dependencies installed.
193
+ // https://github.com/nordnet/cordova-universal-links-plugin
194
+ // Note that cordova-universal-links-plugin has been abandoned.
195
+ // A fork with latest fixes is available at:
196
+ // https://www.npmjs.com/package/cordova-universal-links-plugin-fix
197
+ index._assert(typeof ((_a = win === null || win === void 0 ? void 0 : win.universalLinks) === null || _a === void 0 ? void 0 : _a.subscribe) === 'function', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
198
+ missingPlugin: 'cordova-universal-links-plugin-fix'
199
+ });
200
+ // https://www.npmjs.com/package/cordova-plugin-buildinfo
201
+ index._assert(typeof ((_b = win === null || win === void 0 ? void 0 : win.BuildInfo) === null || _b === void 0 ? void 0 : _b.packageName) !== 'undefined', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
202
+ missingPlugin: 'cordova-plugin-buildInfo'
203
+ });
204
+ // https://github.com/google/cordova-plugin-browsertab
205
+ index._assert(typeof ((_e = (_d = (_c = win === null || win === void 0 ? void 0 : win.cordova) === null || _c === void 0 ? void 0 : _c.plugins) === null || _d === void 0 ? void 0 : _d.browsertab) === null || _e === void 0 ? void 0 : _e.openUrl) === 'function', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
206
+ missingPlugin: 'cordova-plugin-browsertab'
207
+ });
208
+ index._assert(typeof ((_h = (_g = (_f = win === null || win === void 0 ? void 0 : win.cordova) === null || _f === void 0 ? void 0 : _f.plugins) === null || _g === void 0 ? void 0 : _g.browsertab) === null || _h === void 0 ? void 0 : _h.isAvailable) === 'function', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
209
+ missingPlugin: 'cordova-plugin-browsertab'
210
+ });
211
+ // https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-inappbrowser/
212
+ index._assert(typeof ((_k = (_j = win === null || win === void 0 ? void 0 : win.cordova) === null || _j === void 0 ? void 0 : _j.InAppBrowser) === null || _k === void 0 ? void 0 : _k.open) === 'function', auth, "invalid-cordova-configuration" /* AuthErrorCode.INVALID_CORDOVA_CONFIGURATION */, {
213
+ missingPlugin: 'cordova-plugin-inappbrowser'
214
+ });
215
+ }
216
+ /**
217
+ * Computes the SHA-256 of a session ID. The SubtleCrypto interface is only
218
+ * available in "secure" contexts, which covers Cordova (which is served on a file
219
+ * protocol).
220
+ */
221
+ async function computeSha256(sessionId) {
222
+ const bytes = stringToArrayBuffer(sessionId);
223
+ // TODO: For IE11 crypto has a different name and this operation comes back
224
+ // as an object, not a promise. This is the old proposed standard that
225
+ // is used by IE11:
226
+ // https://www.w3.org/TR/2013/WD-WebCryptoAPI-20130108/#cryptooperation-interface
227
+ const buf = await crypto.subtle.digest('SHA-256', bytes);
228
+ const arr = Array.from(new Uint8Array(buf));
229
+ return arr.map(num => num.toString(16).padStart(2, '0')).join('');
230
+ }
231
+ function stringToArrayBuffer(str) {
232
+ // This function is only meant to deal with an ASCII charset and makes
233
+ // certain simplifying assumptions.
234
+ index.debugAssert(/[0-9a-zA-Z]+/.test(str), 'Can only convert alpha-numeric strings');
235
+ if (typeof TextEncoder !== 'undefined') {
236
+ return new TextEncoder().encode(str);
237
+ }
238
+ const buff = new ArrayBuffer(str.length);
239
+ const view = new Uint8Array(buff);
240
+ for (let i = 0; i < str.length; i++) {
241
+ view[i] = str.charCodeAt(i);
242
+ }
243
+ return view;
244
+ }
245
+
246
+ /**
247
+ * @license
248
+ * Copyright 2020 Google LLC
249
+ *
250
+ * Licensed under the Apache License, Version 2.0 (the "License");
251
+ * you may not use this file except in compliance with the License.
252
+ * You may obtain a copy of the License at
253
+ *
254
+ * http://www.apache.org/licenses/LICENSE-2.0
255
+ *
256
+ * Unless required by applicable law or agreed to in writing, software
257
+ * distributed under the License is distributed on an "AS IS" BASIS,
258
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
259
+ * See the License for the specific language governing permissions and
260
+ * limitations under the License.
261
+ */
262
+ const SESSION_ID_LENGTH = 20;
263
+ /** Custom AuthEventManager that adds passive listeners to events */
264
+ class CordovaAuthEventManager extends index.AuthEventManager {
265
+ constructor() {
266
+ super(...arguments);
267
+ this.passiveListeners = new Set();
268
+ this.initPromise = new Promise(resolve => {
269
+ this.resolveInialized = resolve;
270
+ });
271
+ }
272
+ addPassiveListener(cb) {
273
+ this.passiveListeners.add(cb);
274
+ }
275
+ removePassiveListener(cb) {
276
+ this.passiveListeners.delete(cb);
277
+ }
278
+ // In a Cordova environment, this manager can live through multiple redirect
279
+ // operations
280
+ resetRedirect() {
281
+ this.queuedRedirectEvent = null;
282
+ this.hasHandledPotentialRedirect = false;
283
+ }
284
+ /** Override the onEvent method */
285
+ onEvent(event) {
286
+ this.resolveInialized();
287
+ this.passiveListeners.forEach(cb => cb(event));
288
+ return super.onEvent(event);
289
+ }
290
+ async initialized() {
291
+ await this.initPromise;
292
+ }
293
+ }
294
+ /**
295
+ * Generates a (partial) {@link AuthEvent}.
296
+ */
297
+ function _generateNewEvent(auth, type, eventId = null) {
298
+ return {
299
+ type,
300
+ eventId,
301
+ urlResponse: null,
302
+ sessionId: generateSessionId(),
303
+ postBody: null,
304
+ tenantId: auth.tenantId,
305
+ error: index._createError(auth, "no-auth-event" /* AuthErrorCode.NO_AUTH_EVENT */)
306
+ };
307
+ }
308
+ function _savePartialEvent(auth, event) {
309
+ return storage()._set(persistenceKey(auth), event);
310
+ }
311
+ async function _getAndRemoveEvent(auth) {
312
+ const event = (await storage()._get(persistenceKey(auth)));
313
+ if (event) {
314
+ await storage()._remove(persistenceKey(auth));
315
+ }
316
+ return event;
317
+ }
318
+ function _eventFromPartialAndUrl(partialEvent, url) {
319
+ var _a, _b;
320
+ // Parse the deep link within the dynamic link URL.
321
+ const callbackUrl = _getDeepLinkFromCallback(url);
322
+ // Confirm it is actually a callback URL.
323
+ // Currently the universal link will be of this format:
324
+ // https://<AUTH_DOMAIN>/__/auth/callback<OAUTH_RESPONSE>
325
+ // This is a fake URL but is not intended to take the user anywhere
326
+ // and just redirect to the app.
327
+ if (callbackUrl.includes('/__/auth/callback')) {
328
+ // Check if there is an error in the URL.
329
+ // This mechanism is also used to pass errors back to the app:
330
+ // https://<AUTH_DOMAIN>/__/auth/callback?firebaseError=<STRINGIFIED_ERROR>
331
+ const params = searchParamsOrEmpty(callbackUrl);
332
+ // Get the error object corresponding to the stringified error if found.
333
+ const errorObject = params['firebaseError']
334
+ ? parseJsonOrNull(decodeURIComponent(params['firebaseError']))
335
+ : null;
336
+ const code = (_b = (_a = errorObject === null || errorObject === void 0 ? void 0 : errorObject['code']) === null || _a === void 0 ? void 0 : _a.split('auth/')) === null || _b === void 0 ? void 0 : _b[1];
337
+ const error = code ? index._createError(code) : null;
338
+ if (error) {
339
+ return {
340
+ type: partialEvent.type,
341
+ eventId: partialEvent.eventId,
342
+ tenantId: partialEvent.tenantId,
343
+ error,
344
+ urlResponse: null,
345
+ sessionId: null,
346
+ postBody: null
347
+ };
348
+ }
349
+ else {
350
+ return {
351
+ type: partialEvent.type,
352
+ eventId: partialEvent.eventId,
353
+ tenantId: partialEvent.tenantId,
354
+ sessionId: partialEvent.sessionId,
355
+ urlResponse: callbackUrl,
356
+ postBody: null
357
+ };
358
+ }
359
+ }
360
+ return null;
361
+ }
362
+ function generateSessionId() {
363
+ const chars = [];
364
+ const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
365
+ for (let i = 0; i < SESSION_ID_LENGTH; i++) {
366
+ const idx = Math.floor(Math.random() * allowedChars.length);
367
+ chars.push(allowedChars.charAt(idx));
368
+ }
369
+ return chars.join('');
370
+ }
371
+ function storage() {
372
+ return index._getInstance(index.browserLocalPersistence);
373
+ }
374
+ function persistenceKey(auth) {
375
+ return index._persistenceKeyName("authEvent" /* KeyName.AUTH_EVENT */, auth.config.apiKey, auth.name);
376
+ }
377
+ function parseJsonOrNull(json) {
378
+ try {
379
+ return JSON.parse(json);
380
+ }
381
+ catch (e) {
382
+ return null;
383
+ }
384
+ }
385
+ // Exported for testing
386
+ function _getDeepLinkFromCallback(url) {
387
+ const params = searchParamsOrEmpty(url);
388
+ const link = params['link'] ? decodeURIComponent(params['link']) : undefined;
389
+ // Double link case (automatic redirect)
390
+ const doubleDeepLink = searchParamsOrEmpty(link)['link'];
391
+ // iOS custom scheme links.
392
+ const iOSDeepLink = params['deep_link_id']
393
+ ? decodeURIComponent(params['deep_link_id'])
394
+ : undefined;
395
+ const iOSDoubleDeepLink = searchParamsOrEmpty(iOSDeepLink)['link'];
396
+ return iOSDoubleDeepLink || iOSDeepLink || doubleDeepLink || link || url;
397
+ }
398
+ /**
399
+ * Optimistically tries to get search params from a string, or else returns an
400
+ * empty search params object.
401
+ */
402
+ function searchParamsOrEmpty(url) {
403
+ if (!(url === null || url === void 0 ? void 0 : url.includes('?'))) {
404
+ return {};
405
+ }
406
+ const [_, ...rest] = url.split('?');
407
+ return util.querystringDecode(rest.join('?'));
408
+ }
409
+
410
+ /**
411
+ * @license
412
+ * Copyright 2021 Google LLC
413
+ *
414
+ * Licensed under the Apache License, Version 2.0 (the "License");
415
+ * you may not use this file except in compliance with the License.
416
+ * You may obtain a copy of the License at
417
+ *
418
+ * http://www.apache.org/licenses/LICENSE-2.0
419
+ *
420
+ * Unless required by applicable law or agreed to in writing, software
421
+ * distributed under the License is distributed on an "AS IS" BASIS,
422
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
423
+ * See the License for the specific language governing permissions and
424
+ * limitations under the License.
425
+ */
426
+ /**
427
+ * How long to wait for the initial auth event before concluding no
428
+ * redirect pending
429
+ */
430
+ const INITIAL_EVENT_TIMEOUT_MS = 500;
431
+ class CordovaPopupRedirectResolver {
432
+ constructor() {
433
+ this._redirectPersistence = index.browserSessionPersistence;
434
+ this._shouldInitProactively = true; // This is lightweight for Cordova
435
+ this.eventManagers = new Map();
436
+ this.originValidationPromises = {};
437
+ this._completeRedirectFn = index._getRedirectResult;
438
+ this._overrideRedirectResult = index._overrideRedirectResult;
439
+ }
440
+ async _initialize(auth) {
441
+ const key = auth._key();
442
+ let manager = this.eventManagers.get(key);
443
+ if (!manager) {
444
+ manager = new CordovaAuthEventManager(auth);
445
+ this.eventManagers.set(key, manager);
446
+ this.attachCallbackListeners(auth, manager);
447
+ }
448
+ return manager;
449
+ }
450
+ _openPopup(auth) {
451
+ index._fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
452
+ }
453
+ async _openRedirect(auth, provider, authType, eventId) {
454
+ _checkCordovaConfiguration(auth);
455
+ const manager = await this._initialize(auth);
456
+ await manager.initialized();
457
+ // Reset the persisted redirect states. This does not matter on Web where
458
+ // the redirect always blows away application state entirely. On Cordova,
459
+ // the app maintains control flow through the redirect.
460
+ manager.resetRedirect();
461
+ index._clearRedirectOutcomes();
462
+ await this._originValidation(auth);
463
+ const event = _generateNewEvent(auth, authType, eventId);
464
+ await _savePartialEvent(auth, event);
465
+ const url = await _generateHandlerUrl(auth, event, provider);
466
+ const iabRef = await _performRedirect(url);
467
+ return _waitForAppResume(auth, manager, iabRef);
468
+ }
469
+ _isIframeWebStorageSupported(_auth, _cb) {
470
+ throw new Error('Method not implemented.');
471
+ }
472
+ _originValidation(auth) {
473
+ const key = auth._key();
474
+ if (!this.originValidationPromises[key]) {
475
+ this.originValidationPromises[key] = _validateOrigin(auth);
476
+ }
477
+ return this.originValidationPromises[key];
478
+ }
479
+ attachCallbackListeners(auth, manager) {
480
+ // Get the global plugins
481
+ const { universalLinks, handleOpenURL, BuildInfo } = _cordovaWindow();
482
+ const noEventTimeout = setTimeout(async () => {
483
+ // We didn't see that initial event. Clear any pending object and
484
+ // dispatch no event
485
+ await _getAndRemoveEvent(auth);
486
+ manager.onEvent(generateNoEvent());
487
+ }, INITIAL_EVENT_TIMEOUT_MS);
488
+ const universalLinksCb = async (eventData) => {
489
+ // We have an event so we can clear the no event timeout
490
+ clearTimeout(noEventTimeout);
491
+ const partialEvent = await _getAndRemoveEvent(auth);
492
+ let finalEvent = null;
493
+ if (partialEvent && (eventData === null || eventData === void 0 ? void 0 : eventData['url'])) {
494
+ finalEvent = _eventFromPartialAndUrl(partialEvent, eventData['url']);
495
+ }
496
+ // If finalEvent is never filled, trigger with no event
497
+ manager.onEvent(finalEvent || generateNoEvent());
498
+ };
499
+ // Universal links subscriber doesn't exist for iOS, so we need to check
500
+ if (typeof universalLinks !== 'undefined' &&
501
+ typeof universalLinks.subscribe === 'function') {
502
+ universalLinks.subscribe(null, universalLinksCb);
503
+ }
504
+ // iOS 7 or 8 custom URL schemes.
505
+ // This is also the current default behavior for iOS 9+.
506
+ // For this to work, cordova-plugin-customurlscheme needs to be installed.
507
+ // https://github.com/EddyVerbruggen/Custom-URL-scheme
508
+ // Do not overwrite the existing developer's URL handler.
509
+ const existingHandleOpenURL = handleOpenURL;
510
+ const packagePrefix = `${BuildInfo.packageName.toLowerCase()}://`;
511
+ _cordovaWindow().handleOpenURL = async (url) => {
512
+ if (url.toLowerCase().startsWith(packagePrefix)) {
513
+ // We want this intentionally to float
514
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
515
+ universalLinksCb({ url });
516
+ }
517
+ // Call the developer's handler if it is present.
518
+ if (typeof existingHandleOpenURL === 'function') {
519
+ try {
520
+ existingHandleOpenURL(url);
521
+ }
522
+ catch (e) {
523
+ // This is a developer error. Don't stop the flow of the SDK.
524
+ console.error(e);
525
+ }
526
+ }
527
+ };
528
+ }
529
+ }
530
+ /**
531
+ * An implementation of {@link PopupRedirectResolver} suitable for Cordova
532
+ * based applications.
533
+ *
534
+ * @public
535
+ */
536
+ const cordovaPopupRedirectResolver = CordovaPopupRedirectResolver;
537
+ function generateNoEvent() {
538
+ return {
539
+ type: "unknown" /* AuthEventType.UNKNOWN */,
540
+ eventId: null,
541
+ sessionId: null,
542
+ urlResponse: null,
543
+ postBody: null,
544
+ tenantId: null,
545
+ error: index._createError("no-auth-event" /* AuthErrorCode.NO_AUTH_EVENT */)
546
+ };
547
+ }
548
+
549
+ /**
550
+ * @license
551
+ * Copyright 2017 Google LLC
552
+ *
553
+ * Licensed under the Apache License, Version 2.0 (the "License");
554
+ * you may not use this file except in compliance with the License.
555
+ * You may obtain a copy of the License at
556
+ *
557
+ * http://www.apache.org/licenses/LICENSE-2.0
558
+ *
559
+ * Unless required by applicable law or agreed to in writing, software
560
+ * distributed under the License is distributed on an "AS IS" BASIS,
561
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
562
+ * See the License for the specific language governing permissions and
563
+ * limitations under the License.
564
+ */
565
+ // This function should only be called by frameworks (e.g. FirebaseUI-web) to log their usage.
566
+ // It is not intended for direct use by developer apps. NO jsdoc here to intentionally leave it out
567
+ // of autogenerated documentation pages to reduce accidental misuse.
568
+ function addFrameworkForLogging(auth, framework) {
569
+ index._castAuth(auth)._logFramework(framework);
570
+ }
571
+
572
+ exports.ActionCodeOperation = index.ActionCodeOperation;
573
+ exports.ActionCodeURL = index.ActionCodeURL;
574
+ exports.AuthCredential = index.AuthCredential;
575
+ exports.AuthErrorCodes = index.AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY;
576
+ exports.AuthImpl = index.AuthImpl;
577
+ exports.AuthPopup = index.AuthPopup;
578
+ exports.EmailAuthCredential = index.EmailAuthCredential;
579
+ exports.EmailAuthProvider = index.EmailAuthProvider;
580
+ exports.FacebookAuthProvider = index.FacebookAuthProvider;
581
+ exports.FactorId = index.FactorId;
582
+ exports.FetchProvider = index.FetchProvider;
583
+ exports.GithubAuthProvider = index.GithubAuthProvider;
584
+ exports.GoogleAuthProvider = index.GoogleAuthProvider;
585
+ exports.OAuthCredential = index.OAuthCredential;
586
+ exports.OAuthProvider = index.OAuthProvider;
587
+ exports.OperationType = index.OperationType;
588
+ exports.PhoneAuthCredential = index.PhoneAuthCredential;
589
+ exports.PhoneAuthProvider = index.PhoneAuthProvider;
590
+ exports.PhoneMultiFactorGenerator = index.PhoneMultiFactorGenerator;
591
+ exports.ProviderId = index.ProviderId;
592
+ exports.RecaptchaVerifier = index.RecaptchaVerifier;
593
+ exports.SAMLAuthCredential = index.SAMLAuthCredential;
594
+ exports.SAMLAuthProvider = index.SAMLAuthProvider;
595
+ exports.SignInMethod = index.SignInMethod;
596
+ exports.TwitterAuthProvider = index.TwitterAuthProvider;
597
+ exports.UserImpl = index.UserImpl;
598
+ exports._assert = index._assert;
599
+ exports._castAuth = index._castAuth;
600
+ exports._fail = index._fail;
601
+ exports._generateEventId = index._generateEventId;
602
+ exports._getClientVersion = index._getClientVersion;
603
+ exports._getInstance = index._getInstance;
604
+ exports._getRedirectResult = index._getRedirectResult;
605
+ exports._overrideRedirectResult = index._overrideRedirectResult;
606
+ exports._persistenceKeyName = index._persistenceKeyName;
607
+ exports.applyActionCode = index.applyActionCode;
608
+ exports.beforeAuthStateChanged = index.beforeAuthStateChanged;
609
+ exports.browserLocalPersistence = index.browserLocalPersistence;
610
+ exports.browserPopupRedirectResolver = index.browserPopupRedirectResolver;
611
+ exports.browserSessionPersistence = index.browserSessionPersistence;
612
+ exports.checkActionCode = index.checkActionCode;
613
+ exports.confirmPasswordReset = index.confirmPasswordReset;
614
+ exports.connectAuthEmulator = index.connectAuthEmulator;
615
+ exports.createUserWithEmailAndPassword = index.createUserWithEmailAndPassword;
616
+ exports.debugErrorMap = index.debugErrorMap;
617
+ exports.deleteUser = index.deleteUser;
618
+ exports.fetchSignInMethodsForEmail = index.fetchSignInMethodsForEmail;
619
+ exports.getAdditionalUserInfo = index.getAdditionalUserInfo;
620
+ exports.getAuth = index.getAuth;
621
+ exports.getIdToken = index.getIdToken;
622
+ exports.getIdTokenResult = index.getIdTokenResult;
623
+ exports.getMultiFactorResolver = index.getMultiFactorResolver;
624
+ exports.getRedirectResult = index.getRedirectResult;
625
+ exports.inMemoryPersistence = index.inMemoryPersistence;
626
+ exports.indexedDBLocalPersistence = index.indexedDBLocalPersistence;
627
+ exports.initializeAuth = index.initializeAuth;
628
+ exports.isSignInWithEmailLink = index.isSignInWithEmailLink;
629
+ exports.linkWithCredential = index.linkWithCredential;
630
+ exports.linkWithPhoneNumber = index.linkWithPhoneNumber;
631
+ exports.linkWithPopup = index.linkWithPopup;
632
+ exports.linkWithRedirect = index.linkWithRedirect;
633
+ exports.multiFactor = index.multiFactor;
634
+ exports.onAuthStateChanged = index.onAuthStateChanged;
635
+ exports.onIdTokenChanged = index.onIdTokenChanged;
636
+ exports.parseActionCodeURL = index.parseActionCodeURL;
637
+ exports.prodErrorMap = index.prodErrorMap;
638
+ exports.reauthenticateWithCredential = index.reauthenticateWithCredential;
639
+ exports.reauthenticateWithPhoneNumber = index.reauthenticateWithPhoneNumber;
640
+ exports.reauthenticateWithPopup = index.reauthenticateWithPopup;
641
+ exports.reauthenticateWithRedirect = index.reauthenticateWithRedirect;
642
+ exports.reload = index.reload;
643
+ exports.sendEmailVerification = index.sendEmailVerification;
644
+ exports.sendPasswordResetEmail = index.sendPasswordResetEmail;
645
+ exports.sendSignInLinkToEmail = index.sendSignInLinkToEmail;
646
+ exports.setPersistence = index.setPersistence;
647
+ exports.signInAnonymously = index.signInAnonymously;
648
+ exports.signInWithCredential = index.signInWithCredential;
649
+ exports.signInWithCustomToken = index.signInWithCustomToken;
650
+ exports.signInWithEmailAndPassword = index.signInWithEmailAndPassword;
651
+ exports.signInWithEmailLink = index.signInWithEmailLink;
652
+ exports.signInWithPhoneNumber = index.signInWithPhoneNumber;
653
+ exports.signInWithPopup = index.signInWithPopup;
654
+ exports.signInWithRedirect = index.signInWithRedirect;
655
+ exports.signOut = index.signOut;
656
+ exports.unlink = index.unlink;
657
+ exports.updateCurrentUser = index.updateCurrentUser;
658
+ exports.updateEmail = index.updateEmail;
659
+ exports.updatePassword = index.updatePassword;
660
+ exports.updatePhoneNumber = index.updatePhoneNumber;
661
+ exports.updateProfile = index.updateProfile;
662
+ exports.useDeviceLanguage = index.useDeviceLanguage;
663
+ exports.verifyBeforeUpdateEmail = index.verifyBeforeUpdateEmail;
664
+ exports.verifyPasswordResetCode = index.verifyPasswordResetCode;
665
+ exports.addFrameworkForLogging = addFrameworkForLogging;
666
+ exports.cordovaPopupRedirectResolver = cordovaPopupRedirectResolver;
667
+ //# sourceMappingURL=internal.js.map