@firebase/auth 1.7.9 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (435) hide show
  1. package/README.md +32 -1
  2. package/dist/auth-public.d.ts +22 -10
  3. package/dist/auth.d.ts +22 -10
  4. package/dist/browser-cjs/{index-e2e765e6.js → index-b60d3212.js} +393 -176
  5. package/dist/browser-cjs/index-b60d3212.js.map +1 -0
  6. package/dist/browser-cjs/index.js +1 -1
  7. package/dist/browser-cjs/internal.js +1 -1
  8. package/dist/browser-cjs/src/api/account_management/mfa.d.ts +5 -1
  9. package/dist/browser-cjs/src/api/authentication/mfa.d.ts +5 -1
  10. package/dist/browser-cjs/src/api/authentication/sms.d.ts +5 -1
  11. package/dist/browser-cjs/src/api/index.d.ts +7 -3
  12. package/dist/browser-cjs/src/platform_browser/providers/phone.d.ts +7 -5
  13. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  14. package/dist/browser-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  15. package/dist/browser-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
  16. package/dist/cordova/auth-cordova-public.d.ts +7 -0
  17. package/dist/cordova/auth-cordova.d.ts +7 -0
  18. package/dist/cordova/index.js +6 -7
  19. package/dist/cordova/index.js.map +1 -1
  20. package/dist/cordova/internal.js +660 -985
  21. package/dist/cordova/internal.js.map +1 -1
  22. package/dist/cordova/popup_redirect-6fcd583a.js +9635 -0
  23. package/dist/cordova/popup_redirect-6fcd583a.js.map +1 -0
  24. package/dist/cordova/src/api/account_management/mfa.d.ts +5 -1
  25. package/dist/cordova/src/api/authentication/mfa.d.ts +5 -1
  26. package/dist/cordova/src/api/authentication/sms.d.ts +5 -1
  27. package/dist/cordova/src/api/index.d.ts +7 -3
  28. package/dist/cordova/src/platform_browser/providers/phone.d.ts +7 -5
  29. package/dist/cordova/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  30. package/dist/cordova/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  31. package/dist/cordova/src/platform_browser/strategies/phone.d.ts +10 -6
  32. package/dist/{esm5/src/api/account_management/mfa.test.d.ts → cordova/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
  33. package/dist/esm2017/{index-68602d24.js → index-a7d5cfcc.js} +393 -176
  34. package/dist/esm2017/index-a7d5cfcc.js.map +1 -0
  35. package/dist/esm2017/index.js +1 -1
  36. package/dist/esm2017/internal.js +2 -2
  37. package/dist/esm2017/src/api/account_management/mfa.d.ts +5 -1
  38. package/dist/esm2017/src/api/authentication/mfa.d.ts +5 -1
  39. package/dist/esm2017/src/api/authentication/sms.d.ts +5 -1
  40. package/dist/esm2017/src/api/index.d.ts +7 -3
  41. package/dist/esm2017/src/platform_browser/providers/phone.d.ts +7 -5
  42. package/dist/esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  43. package/dist/esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  44. package/dist/esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
  45. package/dist/{esm5/src/api/account_management/email_and_password.test.d.ts → esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
  46. package/dist/index.webworker.js +7912 -0
  47. package/dist/index.webworker.js.map +1 -0
  48. package/dist/node/index.js +2 -3
  49. package/dist/node/index.js.map +1 -1
  50. package/dist/node/internal.js +555 -844
  51. package/dist/node/internal.js.map +1 -1
  52. package/dist/node/src/api/account_management/mfa.d.ts +5 -1
  53. package/dist/node/src/api/authentication/mfa.d.ts +5 -1
  54. package/dist/node/src/api/authentication/sms.d.ts +5 -1
  55. package/dist/node/src/api/index.d.ts +7 -3
  56. package/dist/node/src/platform_browser/providers/phone.d.ts +7 -5
  57. package/dist/node/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  58. package/dist/node/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  59. package/dist/node/src/platform_browser/strategies/phone.d.ts +10 -6
  60. package/dist/node/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  61. package/dist/node/totp-ab108bed.js +7582 -0
  62. package/dist/node/totp-ab108bed.js.map +1 -0
  63. package/dist/node-esm/index.js +1 -2
  64. package/dist/node-esm/index.js.map +1 -1
  65. package/dist/node-esm/internal.js +2 -3
  66. package/dist/node-esm/internal.js.map +1 -1
  67. package/dist/node-esm/src/api/account_management/mfa.d.ts +5 -1
  68. package/dist/node-esm/src/api/authentication/mfa.d.ts +5 -1
  69. package/dist/node-esm/src/api/authentication/sms.d.ts +5 -1
  70. package/dist/node-esm/src/api/index.d.ts +7 -3
  71. package/dist/node-esm/src/platform_browser/providers/phone.d.ts +7 -5
  72. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  73. package/dist/node-esm/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  74. package/dist/node-esm/src/platform_browser/strategies/phone.d.ts +10 -6
  75. package/dist/{esm5/scripts/run_node_tests.d.ts → node-esm/test/integration/flows/recaptcha_enterprise.test.d.ts} +1 -1
  76. package/dist/node-esm/{totp-219bb96f.js → totp-f311e20a.js} +170 -33
  77. package/dist/node-esm/totp-f311e20a.js.map +1 -0
  78. package/dist/rn/index-4d73adbf.js +8575 -0
  79. package/dist/rn/index-4d73adbf.js.map +1 -0
  80. package/dist/rn/index.js +45 -55
  81. package/dist/rn/index.js.map +1 -1
  82. package/dist/rn/internal.js +1195 -1890
  83. package/dist/rn/internal.js.map +1 -1
  84. package/dist/rn/src/api/account_management/mfa.d.ts +5 -1
  85. package/dist/rn/src/api/authentication/mfa.d.ts +5 -1
  86. package/dist/rn/src/api/authentication/sms.d.ts +5 -1
  87. package/dist/rn/src/api/index.d.ts +7 -3
  88. package/dist/rn/src/platform_browser/providers/phone.d.ts +7 -5
  89. package/dist/rn/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  90. package/dist/rn/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  91. package/dist/rn/src/platform_browser/strategies/phone.d.ts +10 -6
  92. package/dist/rn/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  93. package/dist/src/api/account_management/mfa.d.ts +5 -1
  94. package/dist/src/api/authentication/mfa.d.ts +5 -1
  95. package/dist/src/api/authentication/sms.d.ts +5 -1
  96. package/dist/src/api/index.d.ts +7 -3
  97. package/dist/src/platform_browser/providers/phone.d.ts +7 -5
  98. package/dist/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  99. package/dist/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  100. package/dist/src/platform_browser/strategies/phone.d.ts +10 -6
  101. package/dist/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  102. package/dist/web-extension-cjs/index.js +1 -1
  103. package/dist/web-extension-cjs/internal.js +115 -147
  104. package/dist/web-extension-cjs/internal.js.map +1 -1
  105. package/dist/web-extension-cjs/{register-674a8250.js → register-17c71bd5.js} +284 -31
  106. package/dist/web-extension-cjs/register-17c71bd5.js.map +1 -0
  107. package/dist/web-extension-cjs/src/api/account_management/mfa.d.ts +5 -1
  108. package/dist/web-extension-cjs/src/api/authentication/mfa.d.ts +5 -1
  109. package/dist/web-extension-cjs/src/api/authentication/sms.d.ts +5 -1
  110. package/dist/web-extension-cjs/src/api/index.d.ts +7 -3
  111. package/dist/web-extension-cjs/src/platform_browser/providers/phone.d.ts +7 -5
  112. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  113. package/dist/web-extension-cjs/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  114. package/dist/web-extension-cjs/src/platform_browser/strategies/phone.d.ts +10 -6
  115. package/dist/web-extension-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  116. package/dist/web-extension-esm2017/auth-web-extension-public.d.ts +7 -0
  117. package/dist/web-extension-esm2017/auth-web-extension.d.ts +7 -0
  118. package/dist/web-extension-esm2017/index.js +2 -2
  119. package/dist/web-extension-esm2017/internal.js +115 -147
  120. package/dist/web-extension-esm2017/internal.js.map +1 -1
  121. package/dist/web-extension-esm2017/{register-428f8789.js → register-77f1d56a.js} +281 -32
  122. package/dist/web-extension-esm2017/register-77f1d56a.js.map +1 -0
  123. package/dist/web-extension-esm2017/src/api/account_management/mfa.d.ts +5 -1
  124. package/dist/web-extension-esm2017/src/api/authentication/mfa.d.ts +5 -1
  125. package/dist/web-extension-esm2017/src/api/authentication/sms.d.ts +5 -1
  126. package/dist/web-extension-esm2017/src/api/index.d.ts +7 -3
  127. package/dist/web-extension-esm2017/src/platform_browser/providers/phone.d.ts +7 -5
  128. package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha.d.ts +7 -0
  129. package/dist/web-extension-esm2017/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +4 -4
  130. package/dist/web-extension-esm2017/src/platform_browser/strategies/phone.d.ts +10 -6
  131. package/dist/web-extension-esm2017/test/integration/flows/recaptcha_enterprise.test.d.ts +17 -0
  132. package/internal/package.json +5 -3
  133. package/package.json +10 -11
  134. package/dist/browser-cjs/index-e2e765e6.js.map +0 -1
  135. package/dist/cordova/popup_redirect-abcbab4c.js +0 -11249
  136. package/dist/cordova/popup_redirect-abcbab4c.js.map +0 -1
  137. package/dist/esm2017/index-68602d24.js.map +0 -1
  138. package/dist/esm5/index-c0803b14.js +0 -12741
  139. package/dist/esm5/index-c0803b14.js.map +0 -1
  140. package/dist/esm5/index.cordova.d.ts +0 -32
  141. package/dist/esm5/index.d.ts +0 -37
  142. package/dist/esm5/index.doc.d.ts +0 -24
  143. package/dist/esm5/index.js +0 -7
  144. package/dist/esm5/index.js.map +0 -1
  145. package/dist/esm5/index.node.d.ts +0 -17
  146. package/dist/esm5/index.rn.d.ts +0 -40
  147. package/dist/esm5/index.shared.d.ts +0 -19
  148. package/dist/esm5/index.web-extension.d.ts +0 -31
  149. package/dist/esm5/index.webworker.d.ts +0 -21
  150. package/dist/esm5/internal/index.d.ts +0 -42
  151. package/dist/esm5/internal.js +0 -682
  152. package/dist/esm5/internal.js.map +0 -1
  153. package/dist/esm5/src/api/account_management/account.d.ts +0 -59
  154. package/dist/esm5/src/api/account_management/account.test.d.ts +0 -17
  155. package/dist/esm5/src/api/account_management/email_and_password.d.ts +0 -49
  156. package/dist/esm5/src/api/account_management/mfa.d.ts +0 -103
  157. package/dist/esm5/src/api/account_management/profile.d.ts +0 -29
  158. package/dist/esm5/src/api/account_management/profile.test.d.ts +0 -17
  159. package/dist/esm5/src/api/authentication/create_auth_uri.d.ts +0 -26
  160. package/dist/esm5/src/api/authentication/create_auth_uri.test.d.ts +0 -17
  161. package/dist/esm5/src/api/authentication/custom_token.d.ts +0 -26
  162. package/dist/esm5/src/api/authentication/custom_token.test.d.ts +0 -17
  163. package/dist/esm5/src/api/authentication/email_and_password.d.ts +0 -85
  164. package/dist/esm5/src/api/authentication/email_and_password.test.d.ts +0 -17
  165. package/dist/esm5/src/api/authentication/email_link.d.ts +0 -32
  166. package/dist/esm5/src/api/authentication/email_link.test.d.ts +0 -17
  167. package/dist/esm5/src/api/authentication/idp.d.ts +0 -40
  168. package/dist/esm5/src/api/authentication/idp.test.d.ts +0 -17
  169. package/dist/esm5/src/api/authentication/mfa.d.ts +0 -69
  170. package/dist/esm5/src/api/authentication/mfa.test.d.ts +0 -17
  171. package/dist/esm5/src/api/authentication/recaptcha.d.ts +0 -34
  172. package/dist/esm5/src/api/authentication/recaptcha.test.d.ts +0 -17
  173. package/dist/esm5/src/api/authentication/sign_up.d.ts +0 -34
  174. package/dist/esm5/src/api/authentication/sign_up.test.d.ts +0 -17
  175. package/dist/esm5/src/api/authentication/sms.d.ts +0 -50
  176. package/dist/esm5/src/api/authentication/sms.test.d.ts +0 -17
  177. package/dist/esm5/src/api/authentication/token.d.ts +0 -37
  178. package/dist/esm5/src/api/authentication/token.test.d.ts +0 -17
  179. package/dist/esm5/src/api/errors.d.ts +0 -128
  180. package/dist/esm5/src/api/index.d.ts +0 -97
  181. package/dist/esm5/src/api/index.test.d.ts +0 -17
  182. package/dist/esm5/src/api/password_policy/get_password_policy.d.ts +0 -48
  183. package/dist/esm5/src/api/password_policy/get_password_policy.test.d.ts +0 -17
  184. package/dist/esm5/src/api/project_config/get_project_config.d.ts +0 -25
  185. package/dist/esm5/src/api/project_config/get_project_config.test.d.ts +0 -17
  186. package/dist/esm5/src/core/action_code_url.d.ts +0 -73
  187. package/dist/esm5/src/core/action_code_url.test.d.ts +0 -17
  188. package/dist/esm5/src/core/auth/auth_event_manager.d.ts +0 -34
  189. package/dist/esm5/src/core/auth/auth_event_manager.test.d.ts +0 -17
  190. package/dist/esm5/src/core/auth/auth_impl.d.ts +0 -130
  191. package/dist/esm5/src/core/auth/auth_impl.test.d.ts +0 -17
  192. package/dist/esm5/src/core/auth/emulator.d.ts +0 -42
  193. package/dist/esm5/src/core/auth/emulator.test.d.ts +0 -17
  194. package/dist/esm5/src/core/auth/firebase_internal.d.ts +0 -35
  195. package/dist/esm5/src/core/auth/firebase_internal.test.d.ts +0 -17
  196. package/dist/esm5/src/core/auth/initialize.d.ts +0 -46
  197. package/dist/esm5/src/core/auth/initialize.test.d.ts +0 -17
  198. package/dist/esm5/src/core/auth/middleware.d.ts +0 -25
  199. package/dist/esm5/src/core/auth/middleware.test.d.ts +0 -17
  200. package/dist/esm5/src/core/auth/password_policy_impl.d.ts +0 -59
  201. package/dist/esm5/src/core/auth/password_policy_impl.test.d.ts +0 -17
  202. package/dist/esm5/src/core/auth/register.d.ts +0 -23
  203. package/dist/esm5/src/core/credentials/auth_credential.d.ts +0 -75
  204. package/dist/esm5/src/core/credentials/email.d.ts +0 -60
  205. package/dist/esm5/src/core/credentials/email.test.d.ts +0 -17
  206. package/dist/esm5/src/core/credentials/index.d.ts +0 -23
  207. package/dist/esm5/src/core/credentials/oauth.d.ts +0 -81
  208. package/dist/esm5/src/core/credentials/oauth.test.d.ts +0 -17
  209. package/dist/esm5/src/core/credentials/phone.d.ts +0 -52
  210. package/dist/esm5/src/core/credentials/phone.test.d.ts +0 -17
  211. package/dist/esm5/src/core/credentials/saml.d.ts +0 -52
  212. package/dist/esm5/src/core/credentials/saml.test.d.ts +0 -17
  213. package/dist/esm5/src/core/errors.d.ts +0 -325
  214. package/dist/esm5/src/core/errors.test.d.ts +0 -17
  215. package/dist/esm5/src/core/index.d.ts +0 -230
  216. package/dist/esm5/src/core/persistence/in_memory.d.ts +0 -35
  217. package/dist/esm5/src/core/persistence/in_memory.test.d.ts +0 -17
  218. package/dist/esm5/src/core/persistence/index.d.ts +0 -41
  219. package/dist/esm5/src/core/persistence/persistence_user_manager.d.ts +0 -45
  220. package/dist/esm5/src/core/persistence/persistence_user_manager.test.d.ts +0 -17
  221. package/dist/esm5/src/core/providers/email.d.ts +0 -83
  222. package/dist/esm5/src/core/providers/email.test.d.ts +0 -17
  223. package/dist/esm5/src/core/providers/facebook.d.ts +0 -93
  224. package/dist/esm5/src/core/providers/facebook.test.d.ts +0 -17
  225. package/dist/esm5/src/core/providers/federated.d.ts +0 -64
  226. package/dist/esm5/src/core/providers/federated.test.d.ts +0 -17
  227. package/dist/esm5/src/core/providers/github.d.ts +0 -89
  228. package/dist/esm5/src/core/providers/github.test.d.ts +0 -17
  229. package/dist/esm5/src/core/providers/google.d.ts +0 -96
  230. package/dist/esm5/src/core/providers/google.test.d.ts +0 -17
  231. package/dist/esm5/src/core/providers/oauth.d.ts +0 -151
  232. package/dist/esm5/src/core/providers/oauth.test.d.ts +0 -17
  233. package/dist/esm5/src/core/providers/saml.d.ts +0 -62
  234. package/dist/esm5/src/core/providers/saml.test.d.ts +0 -17
  235. package/dist/esm5/src/core/providers/twitter.d.ts +0 -103
  236. package/dist/esm5/src/core/providers/twitter.test.d.ts +0 -17
  237. package/dist/esm5/src/core/strategies/abstract_popup_redirect_operation.d.ts +0 -44
  238. package/dist/esm5/src/core/strategies/abstract_popup_redirect_operation.test.d.ts +0 -17
  239. package/dist/esm5/src/core/strategies/action_code_settings.d.ts +0 -19
  240. package/dist/esm5/src/core/strategies/action_code_settings.test.d.ts +0 -17
  241. package/dist/esm5/src/core/strategies/anonymous.d.ts +0 -32
  242. package/dist/esm5/src/core/strategies/anonymous.test.d.ts +0 -17
  243. package/dist/esm5/src/core/strategies/credential.d.ts +0 -64
  244. package/dist/esm5/src/core/strategies/credential.test.d.ts +0 -17
  245. package/dist/esm5/src/core/strategies/custom_token.d.ts +0 -37
  246. package/dist/esm5/src/core/strategies/custom_token.test.d.ts +0 -17
  247. package/dist/esm5/src/core/strategies/email.d.ts +0 -104
  248. package/dist/esm5/src/core/strategies/email.test.d.ts +0 -17
  249. package/dist/esm5/src/core/strategies/email_and_password.d.ts +0 -139
  250. package/dist/esm5/src/core/strategies/email_and_password.test.d.ts +0 -17
  251. package/dist/esm5/src/core/strategies/email_link.d.ts +0 -107
  252. package/dist/esm5/src/core/strategies/email_link.test.d.ts +0 -17
  253. package/dist/esm5/src/core/strategies/idp.d.ts +0 -32
  254. package/dist/esm5/src/core/strategies/idp.test.d.ts +0 -17
  255. package/dist/esm5/src/core/strategies/redirect.d.ts +0 -36
  256. package/dist/esm5/src/core/strategies/redirect.test.d.ts +0 -17
  257. package/dist/esm5/src/core/user/account_info.d.ts +0 -68
  258. package/dist/esm5/src/core/user/account_info.test.d.ts +0 -17
  259. package/dist/esm5/src/core/user/additional_user_info.d.ts +0 -31
  260. package/dist/esm5/src/core/user/additional_user_info.test.d.ts +0 -17
  261. package/dist/esm5/src/core/user/id_token_result.d.ts +0 -48
  262. package/dist/esm5/src/core/user/id_token_result.test.d.ts +0 -17
  263. package/dist/esm5/src/core/user/invalidation.d.ts +0 -18
  264. package/dist/esm5/src/core/user/invalidation.test.d.ts +0 -17
  265. package/dist/esm5/src/core/user/link_unlink.d.ts +0 -30
  266. package/dist/esm5/src/core/user/link_unlink.test.d.ts +0 -17
  267. package/dist/esm5/src/core/user/proactive_refresh.d.ts +0 -34
  268. package/dist/esm5/src/core/user/proactive_refresh.test.d.ts +0 -17
  269. package/dist/esm5/src/core/user/reauthenticate.d.ts +0 -20
  270. package/dist/esm5/src/core/user/reauthenticate.test.d.ts +0 -17
  271. package/dist/esm5/src/core/user/reload.d.ts +0 -29
  272. package/dist/esm5/src/core/user/reload.test.d.ts +0 -17
  273. package/dist/esm5/src/core/user/token_manager.d.ts +0 -50
  274. package/dist/esm5/src/core/user/token_manager.test.d.ts +0 -17
  275. package/dist/esm5/src/core/user/user_credential_impl.d.ts +0 -37
  276. package/dist/esm5/src/core/user/user_credential_impl.test.d.ts +0 -17
  277. package/dist/esm5/src/core/user/user_impl.d.ts +0 -74
  278. package/dist/esm5/src/core/user/user_impl.test.d.ts +0 -17
  279. package/dist/esm5/src/core/user/user_metadata.d.ts +0 -27
  280. package/dist/esm5/src/core/util/assert.d.ts +0 -94
  281. package/dist/esm5/src/core/util/assert.test.d.ts +0 -17
  282. package/dist/esm5/src/core/util/browser.d.ts +0 -50
  283. package/dist/esm5/src/core/util/browser.test.d.ts +0 -17
  284. package/dist/esm5/src/core/util/delay.d.ts +0 -31
  285. package/dist/esm5/src/core/util/delay.test.d.ts +0 -17
  286. package/dist/esm5/src/core/util/emulator.d.ts +0 -18
  287. package/dist/esm5/src/core/util/emulator.test.d.ts +0 -17
  288. package/dist/esm5/src/core/util/event_id.d.ts +0 -17
  289. package/dist/esm5/src/core/util/event_id.test.d.ts +0 -17
  290. package/dist/esm5/src/core/util/fetch_provider.d.ts +0 -25
  291. package/dist/esm5/src/core/util/handler.d.ts +0 -20
  292. package/dist/esm5/src/core/util/instantiator.d.ts +0 -28
  293. package/dist/esm5/src/core/util/instantiator.test.d.ts +0 -17
  294. package/dist/esm5/src/core/util/location.d.ts +0 -19
  295. package/dist/esm5/src/core/util/log.d.ts +0 -23
  296. package/dist/esm5/src/core/util/navigator.d.ts +0 -21
  297. package/dist/esm5/src/core/util/providers.d.ts +0 -23
  298. package/dist/esm5/src/core/util/resolver.d.ts +0 -25
  299. package/dist/esm5/src/core/util/time.d.ts +0 -17
  300. package/dist/esm5/src/core/util/validate_origin.d.ts +0 -18
  301. package/dist/esm5/src/core/util/validate_origin.test.d.ts +0 -17
  302. package/dist/esm5/src/core/util/version.d.ts +0 -31
  303. package/dist/esm5/src/core/util/version.test.d.ts +0 -17
  304. package/dist/esm5/src/index.d.ts +0 -18
  305. package/dist/esm5/src/mfa/assertions/totp.d.ts +0 -124
  306. package/dist/esm5/src/mfa/assertions/totp.test.d.ts +0 -17
  307. package/dist/esm5/src/mfa/index.d.ts +0 -18
  308. package/dist/esm5/src/mfa/mfa_assertion.d.ts +0 -27
  309. package/dist/esm5/src/mfa/mfa_error.d.ts +0 -35
  310. package/dist/esm5/src/mfa/mfa_info.d.ts +0 -36
  311. package/dist/esm5/src/mfa/mfa_info.test.d.ts +0 -17
  312. package/dist/esm5/src/mfa/mfa_resolver.d.ts +0 -41
  313. package/dist/esm5/src/mfa/mfa_resolver.test.d.ts +0 -17
  314. package/dist/esm5/src/mfa/mfa_session.d.ts +0 -39
  315. package/dist/esm5/src/mfa/mfa_session.test.d.ts +0 -17
  316. package/dist/esm5/src/mfa/mfa_user.d.ts +0 -38
  317. package/dist/esm5/src/mfa/mfa_user.test.d.ts +0 -17
  318. package/dist/esm5/src/model/application_verifier.d.ts +0 -23
  319. package/dist/esm5/src/model/auth.d.ts +0 -87
  320. package/dist/esm5/src/model/enum_maps.d.ts +0 -98
  321. package/dist/esm5/src/model/enums.d.ts +0 -74
  322. package/dist/esm5/src/model/id_token.d.ts +0 -87
  323. package/dist/esm5/src/model/password_policy.d.ts +0 -111
  324. package/dist/esm5/src/model/popup_redirect.d.ts +0 -94
  325. package/dist/esm5/src/model/public_types.d.ts +0 -1285
  326. package/dist/esm5/src/model/user.d.ts +0 -83
  327. package/dist/esm5/src/platform_browser/auth.test.d.ts +0 -17
  328. package/dist/esm5/src/platform_browser/auth_window.d.ts +0 -37
  329. package/dist/esm5/src/platform_browser/iframe/gapi.d.ts +0 -19
  330. package/dist/esm5/src/platform_browser/iframe/gapi.iframes.d.ts +0 -47
  331. package/dist/esm5/src/platform_browser/iframe/gapi.test.d.ts +0 -17
  332. package/dist/esm5/src/platform_browser/iframe/iframe.d.ts +0 -18
  333. package/dist/esm5/src/platform_browser/iframe/iframe.test.d.ts +0 -17
  334. package/dist/esm5/src/platform_browser/index.d.ts +0 -27
  335. package/dist/esm5/src/platform_browser/load_js.d.ts +0 -29
  336. package/dist/esm5/src/platform_browser/load_js.test.d.ts +0 -17
  337. package/dist/esm5/src/platform_browser/messagechannel/index.d.ts +0 -87
  338. package/dist/esm5/src/platform_browser/messagechannel/promise.d.ts +0 -33
  339. package/dist/esm5/src/platform_browser/messagechannel/promise.test.d.ts +0 -17
  340. package/dist/esm5/src/platform_browser/messagechannel/receiver.d.ts +0 -63
  341. package/dist/esm5/src/platform_browser/messagechannel/receiver.test.d.ts +0 -17
  342. package/dist/esm5/src/platform_browser/messagechannel/sender.d.ts +0 -46
  343. package/dist/esm5/src/platform_browser/messagechannel/sender.test.d.ts +0 -17
  344. package/dist/esm5/src/platform_browser/mfa/assertions/phone.d.ts +0 -59
  345. package/dist/esm5/src/platform_browser/mfa/assertions/phone.test.d.ts +0 -17
  346. package/dist/esm5/src/platform_browser/persistence/browser.d.ts +0 -27
  347. package/dist/esm5/src/platform_browser/persistence/browser.test.d.ts +0 -17
  348. package/dist/esm5/src/platform_browser/persistence/indexed_db.d.ts +0 -33
  349. package/dist/esm5/src/platform_browser/persistence/indexed_db.test.d.ts +0 -17
  350. package/dist/esm5/src/platform_browser/persistence/local_storage.d.ts +0 -25
  351. package/dist/esm5/src/platform_browser/persistence/local_storage.test.d.ts +0 -17
  352. package/dist/esm5/src/platform_browser/persistence/session_storage.d.ts +0 -24
  353. package/dist/esm5/src/platform_browser/persistence/session_storage.test.d.ts +0 -17
  354. package/dist/esm5/src/platform_browser/popup_redirect.d.ts +0 -27
  355. package/dist/esm5/src/platform_browser/popup_redirect.test.d.ts +0 -17
  356. package/dist/esm5/src/platform_browser/providers/phone.d.ts +0 -152
  357. package/dist/esm5/src/platform_browser/providers/phone.test.d.ts +0 -17
  358. package/dist/esm5/src/platform_browser/recaptcha/recaptcha.d.ts +0 -71
  359. package/dist/esm5/src/platform_browser/recaptcha/recaptcha.test.d.ts +0 -17
  360. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.d.ts +0 -45
  361. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.test.d.ts +0 -17
  362. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_loader.d.ts +0 -49
  363. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_loader.test.d.ts +0 -17
  364. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_mock.d.ts +0 -66
  365. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_mock.test.d.ts +0 -17
  366. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_verifier.d.ts +0 -92
  367. package/dist/esm5/src/platform_browser/recaptcha/recaptcha_verifier.test.d.ts +0 -17
  368. package/dist/esm5/src/platform_browser/strategies/phone.d.ts +0 -112
  369. package/dist/esm5/src/platform_browser/strategies/phone.test.d.ts +0 -17
  370. package/dist/esm5/src/platform_browser/strategies/popup.d.ts +0 -109
  371. package/dist/esm5/src/platform_browser/strategies/popup.test.d.ts +0 -17
  372. package/dist/esm5/src/platform_browser/strategies/redirect.d.ts +0 -176
  373. package/dist/esm5/src/platform_browser/strategies/redirect.test.d.ts +0 -17
  374. package/dist/esm5/src/platform_browser/util/popup.d.ts +0 -24
  375. package/dist/esm5/src/platform_browser/util/popup.test.d.ts +0 -17
  376. package/dist/esm5/src/platform_browser/util/worker.d.ts +0 -20
  377. package/dist/esm5/src/platform_cordova/plugins.d.ts +0 -42
  378. package/dist/esm5/src/platform_cordova/popup_redirect/events.d.ts +0 -39
  379. package/dist/esm5/src/platform_cordova/popup_redirect/events.test.d.ts +0 -17
  380. package/dist/esm5/src/platform_cordova/popup_redirect/popup_redirect.d.ts +0 -24
  381. package/dist/esm5/src/platform_cordova/popup_redirect/popup_redirect.test.d.ts +0 -17
  382. package/dist/esm5/src/platform_cordova/popup_redirect/utils.d.ts +0 -47
  383. package/dist/esm5/src/platform_cordova/popup_redirect/utils.test.d.ts +0 -17
  384. package/dist/esm5/src/platform_cordova/strategies/redirect.d.ts +0 -20
  385. package/dist/esm5/src/platform_node/index.d.ts +0 -50
  386. package/dist/esm5/src/platform_react_native/persistence/react_native.d.ts +0 -25
  387. package/dist/esm5/src/platform_react_native/persistence/react_native.test.d.ts +0 -17
  388. package/dist/esm5/test/helpers/api/helper.d.ts +0 -22
  389. package/dist/esm5/test/helpers/delay.d.ts +0 -20
  390. package/dist/esm5/test/helpers/erroring_unavailable_persistence.d.ts +0 -36
  391. package/dist/esm5/test/helpers/fake_service_worker.d.ts +0 -22
  392. package/dist/esm5/test/helpers/id_token_response.d.ts +0 -18
  393. package/dist/esm5/test/helpers/iframe_event.d.ts +0 -19
  394. package/dist/esm5/test/helpers/integration/emulator_rest_helpers.d.ts +0 -35
  395. package/dist/esm5/test/helpers/integration/helpers.d.ts +0 -32
  396. package/dist/esm5/test/helpers/integration/settings.d.ts +0 -23
  397. package/dist/esm5/test/helpers/jwt.d.ts +0 -17
  398. package/dist/esm5/test/helpers/mock_auth.d.ts +0 -47
  399. package/dist/esm5/test/helpers/mock_auth_credential.d.ts +0 -31
  400. package/dist/esm5/test/helpers/mock_fetch.d.ts +0 -30
  401. package/dist/esm5/test/helpers/mock_fetch.test.d.ts +0 -17
  402. package/dist/esm5/test/helpers/mock_popup_redirect_resolver.d.ts +0 -24
  403. package/dist/esm5/test/helpers/redirect_persistence.d.ts +0 -24
  404. package/dist/esm5/test/helpers/timeout_stub.d.ts +0 -34
  405. package/dist/esm5/test/integration/flows/anonymous.test.d.ts +0 -17
  406. package/dist/esm5/test/integration/flows/custom.local.test.d.ts +0 -17
  407. package/dist/esm5/test/integration/flows/email.test.d.ts +0 -17
  408. package/dist/esm5/test/integration/flows/idp.local.test.d.ts +0 -17
  409. package/dist/esm5/test/integration/flows/middleware_test_generator.d.ts +0 -18
  410. package/dist/esm5/test/integration/flows/oob.local.test.d.ts +0 -17
  411. package/dist/esm5/test/integration/flows/password_policy.test.d.ts +0 -17
  412. package/dist/esm5/test/integration/flows/phone.test.d.ts +0 -17
  413. package/dist/esm5/test/integration/flows/totp.test.d.ts +0 -17
  414. package/dist/esm5/test/integration/webdriver/anonymous.test.d.ts +0 -17
  415. package/dist/esm5/test/integration/webdriver/compat/firebaseui.test.d.ts +0 -17
  416. package/dist/esm5/test/integration/webdriver/persistence.test.d.ts +0 -17
  417. package/dist/esm5/test/integration/webdriver/popup.test.d.ts +0 -17
  418. package/dist/esm5/test/integration/webdriver/redirect.test.d.ts +0 -17
  419. package/dist/esm5/test/integration/webdriver/util/auth_driver.d.ts +0 -46
  420. package/dist/esm5/test/integration/webdriver/util/functions.d.ts +0 -81
  421. package/dist/esm5/test/integration/webdriver/util/idp_page.d.ts +0 -31
  422. package/dist/esm5/test/integration/webdriver/util/js_load_condition.d.ts +0 -25
  423. package/dist/esm5/test/integration/webdriver/util/test_runner.d.ts +0 -19
  424. package/dist/esm5/test/integration/webdriver/util/test_server.d.ts +0 -27
  425. package/dist/esm5/test/integration/webdriver/util/ui_page.d.ts +0 -33
  426. package/dist/index.webworker.esm5.js +0 -9265
  427. package/dist/index.webworker.esm5.js.map +0 -1
  428. package/dist/node/totp-259483a2.js +0 -8762
  429. package/dist/node/totp-259483a2.js.map +0 -1
  430. package/dist/node-esm/totp-219bb96f.js.map +0 -1
  431. package/dist/rn/index-2f66320e.js +0 -9819
  432. package/dist/rn/index-2f66320e.js.map +0 -1
  433. package/dist/web-extension-cjs/register-674a8250.js.map +0 -1
  434. package/dist/web-extension-esm2017/register-428f8789.js.map +0 -1
  435. /package/dist/{esm5/test/integration/flows/firebaseserverapp.test.d.ts → browser-cjs/test/integration/flows/recaptcha_enterprise.test.d.ts} +0 -0
@@ -2,12 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var totp = require('./totp-259483a2.js');
6
- var tslib = require('tslib');
5
+ var totp = require('./totp-ab108bed.js');
7
6
  var util = require('@firebase/util');
7
+ require('tslib');
8
8
  var app = require('@firebase/app');
9
9
  require('@firebase/component');
10
- require('undici');
11
10
  require('@firebase/logger');
12
11
 
13
12
  /**
@@ -26,11 +25,9 @@ require('@firebase/logger');
26
25
  * See the License for the specific language governing permissions and
27
26
  * limitations under the License.
28
27
  */
29
- function _generateEventId(prefix, digits) {
30
- if (prefix === void 0) { prefix = ''; }
31
- if (digits === void 0) { digits = 10; }
32
- var random = '';
33
- for (var i = 0; i < digits; i++) {
28
+ function _generateEventId(prefix = '', digits = 10) {
29
+ let random = '';
30
+ for (let i = 0; i < digits; i++) {
34
31
  random += Math.floor(Math.random() * 10);
35
32
  }
36
33
  return prefix + random;
@@ -52,21 +49,20 @@ function _generateEventId(prefix, digits) {
52
49
  * See the License for the specific language governing permissions and
53
50
  * limitations under the License.
54
51
  */
55
- var AuthPopup = /** @class */ (function () {
56
- function AuthPopup(window) {
52
+ class AuthPopup {
53
+ constructor(window) {
57
54
  this.window = window;
58
55
  this.associatedEvent = null;
59
56
  }
60
- AuthPopup.prototype.close = function () {
57
+ close() {
61
58
  if (this.window) {
62
59
  try {
63
60
  this.window.close();
64
61
  }
65
62
  catch (e) { }
66
63
  }
67
- };
68
- return AuthPopup;
69
- }());
64
+ }
65
+ }
70
66
 
71
67
  /**
72
68
  * @license
@@ -113,24 +109,22 @@ function _withDefaultResolver(auth, resolverOverride) {
113
109
  * See the License for the specific language governing permissions and
114
110
  * limitations under the License.
115
111
  */
116
- var IdpCredential = /** @class */ (function (_super) {
117
- tslib.__extends(IdpCredential, _super);
118
- function IdpCredential(params) {
119
- var _this = _super.call(this, "custom" /* ProviderId.CUSTOM */, "custom" /* ProviderId.CUSTOM */) || this;
120
- _this.params = params;
121
- return _this;
122
- }
123
- IdpCredential.prototype._getIdTokenResponse = function (auth) {
112
+ class IdpCredential extends totp.AuthCredential {
113
+ constructor(params) {
114
+ super("custom" /* ProviderId.CUSTOM */, "custom" /* ProviderId.CUSTOM */);
115
+ this.params = params;
116
+ }
117
+ _getIdTokenResponse(auth) {
124
118
  return totp.signInWithIdp(auth, this._buildIdpRequest());
125
- };
126
- IdpCredential.prototype._linkToIdToken = function (auth, idToken) {
119
+ }
120
+ _linkToIdToken(auth, idToken) {
127
121
  return totp.signInWithIdp(auth, this._buildIdpRequest(idToken));
128
- };
129
- IdpCredential.prototype._getReauthenticationResolver = function (auth) {
122
+ }
123
+ _getReauthenticationResolver(auth) {
130
124
  return totp.signInWithIdp(auth, this._buildIdpRequest());
131
- };
132
- IdpCredential.prototype._buildIdpRequest = function (idToken) {
133
- var request = {
125
+ }
126
+ _buildIdpRequest(idToken) {
127
+ const request = {
134
128
  requestUri: this.params.requestUri,
135
129
  sessionId: this.params.sessionId,
136
130
  postBody: this.params.postBody,
@@ -143,26 +137,20 @@ var IdpCredential = /** @class */ (function (_super) {
143
137
  request.idToken = idToken;
144
138
  }
145
139
  return request;
146
- };
147
- return IdpCredential;
148
- }(totp.AuthCredential));
140
+ }
141
+ }
149
142
  function _signIn(params) {
150
143
  return totp._signInWithCredential(params.auth, new IdpCredential(params), params.bypassAuthState);
151
144
  }
152
145
  function _reauth(params) {
153
- var auth = params.auth, user = params.user;
146
+ const { auth, user } = params;
154
147
  totp._assert(user, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
155
148
  return totp._reauthenticate(user, new IdpCredential(params), params.bypassAuthState);
156
149
  }
157
- function _link(params) {
158
- return tslib.__awaiter(this, void 0, void 0, function () {
159
- var auth, user;
160
- return tslib.__generator(this, function (_a) {
161
- auth = params.auth, user = params.user;
162
- totp._assert(user, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
163
- return [2 /*return*/, totp._link(user, new IdpCredential(params), params.bypassAuthState)];
164
- });
165
- });
150
+ async function _link(params) {
151
+ const { auth, user } = params;
152
+ totp._assert(user, auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
153
+ return totp._link(user, new IdpCredential(params), params.bypassAuthState);
166
154
  }
167
155
 
168
156
  /**
@@ -185,9 +173,8 @@ function _link(params) {
185
173
  * Popup event manager. Handles the popup's entire lifecycle; listens to auth
186
174
  * events
187
175
  */
188
- var AbstractPopupRedirectOperation = /** @class */ (function () {
189
- function AbstractPopupRedirectOperation(auth, filter, resolver, user, bypassAuthState) {
190
- if (bypassAuthState === void 0) { bypassAuthState = false; }
176
+ class AbstractPopupRedirectOperation {
177
+ constructor(auth, filter, resolver, user, bypassAuthState = false) {
191
178
  this.auth = auth;
192
179
  this.resolver = resolver;
193
180
  this.user = user;
@@ -196,76 +183,45 @@ var AbstractPopupRedirectOperation = /** @class */ (function () {
196
183
  this.eventManager = null;
197
184
  this.filter = Array.isArray(filter) ? filter : [filter];
198
185
  }
199
- AbstractPopupRedirectOperation.prototype.execute = function () {
200
- var _this = this;
201
- return new Promise(function (resolve, reject) { return tslib.__awaiter(_this, void 0, void 0, function () {
202
- var _a, e_1;
203
- return tslib.__generator(this, function (_b) {
204
- switch (_b.label) {
205
- case 0:
206
- this.pendingPromise = { resolve: resolve, reject: reject };
207
- _b.label = 1;
208
- case 1:
209
- _b.trys.push([1, 4, , 5]);
210
- _a = this;
211
- return [4 /*yield*/, this.resolver._initialize(this.auth)];
212
- case 2:
213
- _a.eventManager = _b.sent();
214
- return [4 /*yield*/, this.onExecution()];
215
- case 3:
216
- _b.sent();
217
- this.eventManager.registerConsumer(this);
218
- return [3 /*break*/, 5];
219
- case 4:
220
- e_1 = _b.sent();
221
- this.reject(e_1);
222
- return [3 /*break*/, 5];
223
- case 5: return [2 /*return*/];
224
- }
225
- });
226
- }); });
227
- };
228
- AbstractPopupRedirectOperation.prototype.onAuthEvent = function (event) {
229
- return tslib.__awaiter(this, void 0, void 0, function () {
230
- var urlResponse, sessionId, postBody, tenantId, error, type, params, _a, e_2;
231
- return tslib.__generator(this, function (_b) {
232
- switch (_b.label) {
233
- case 0:
234
- urlResponse = event.urlResponse, sessionId = event.sessionId, postBody = event.postBody, tenantId = event.tenantId, error = event.error, type = event.type;
235
- if (error) {
236
- this.reject(error);
237
- return [2 /*return*/];
238
- }
239
- params = {
240
- auth: this.auth,
241
- requestUri: urlResponse,
242
- sessionId: sessionId,
243
- tenantId: tenantId || undefined,
244
- postBody: postBody || undefined,
245
- user: this.user,
246
- bypassAuthState: this.bypassAuthState
247
- };
248
- _b.label = 1;
249
- case 1:
250
- _b.trys.push([1, 3, , 4]);
251
- _a = this.resolve;
252
- return [4 /*yield*/, this.getIdpTask(type)(params)];
253
- case 2:
254
- _a.apply(this, [_b.sent()]);
255
- return [3 /*break*/, 4];
256
- case 3:
257
- e_2 = _b.sent();
258
- this.reject(e_2);
259
- return [3 /*break*/, 4];
260
- case 4: return [2 /*return*/];
261
- }
262
- });
186
+ execute() {
187
+ return new Promise(async (resolve, reject) => {
188
+ this.pendingPromise = { resolve, reject };
189
+ try {
190
+ this.eventManager = await this.resolver._initialize(this.auth);
191
+ await this.onExecution();
192
+ this.eventManager.registerConsumer(this);
193
+ }
194
+ catch (e) {
195
+ this.reject(e);
196
+ }
263
197
  });
264
- };
265
- AbstractPopupRedirectOperation.prototype.onError = function (error) {
198
+ }
199
+ async onAuthEvent(event) {
200
+ const { urlResponse, sessionId, postBody, tenantId, error, type } = event;
201
+ if (error) {
202
+ this.reject(error);
203
+ return;
204
+ }
205
+ const params = {
206
+ auth: this.auth,
207
+ requestUri: urlResponse,
208
+ sessionId: sessionId,
209
+ tenantId: tenantId || undefined,
210
+ postBody: postBody || undefined,
211
+ user: this.user,
212
+ bypassAuthState: this.bypassAuthState
213
+ };
214
+ try {
215
+ this.resolve(await this.getIdpTask(type)(params));
216
+ }
217
+ catch (e) {
218
+ this.reject(e);
219
+ }
220
+ }
221
+ onError(error) {
266
222
  this.reject(error);
267
- };
268
- AbstractPopupRedirectOperation.prototype.getIdpTask = function (type) {
223
+ }
224
+ getIdpTask(type) {
269
225
  switch (type) {
270
226
  case "signInViaPopup" /* AuthEventType.SIGN_IN_VIA_POPUP */:
271
227
  case "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */:
@@ -279,26 +235,25 @@ var AbstractPopupRedirectOperation = /** @class */ (function () {
279
235
  default:
280
236
  totp._fail(this.auth, "internal-error" /* AuthErrorCode.INTERNAL_ERROR */);
281
237
  }
282
- };
283
- AbstractPopupRedirectOperation.prototype.resolve = function (cred) {
238
+ }
239
+ resolve(cred) {
284
240
  totp.debugAssert(this.pendingPromise, 'Pending promise was never set');
285
241
  this.pendingPromise.resolve(cred);
286
242
  this.unregisterAndCleanUp();
287
- };
288
- AbstractPopupRedirectOperation.prototype.reject = function (error) {
243
+ }
244
+ reject(error) {
289
245
  totp.debugAssert(this.pendingPromise, 'Pending promise was never set');
290
246
  this.pendingPromise.reject(error);
291
247
  this.unregisterAndCleanUp();
292
- };
293
- AbstractPopupRedirectOperation.prototype.unregisterAndCleanUp = function () {
248
+ }
249
+ unregisterAndCleanUp() {
294
250
  if (this.eventManager) {
295
251
  this.eventManager.unregisterConsumer(this);
296
252
  }
297
253
  this.pendingPromise = null;
298
254
  this.cleanUp();
299
- };
300
- return AbstractPopupRedirectOperation;
301
- }());
255
+ }
256
+ }
302
257
 
303
258
  /**
304
259
  * @license
@@ -316,133 +271,76 @@ var AbstractPopupRedirectOperation = /** @class */ (function () {
316
271
  * See the License for the specific language governing permissions and
317
272
  * limitations under the License.
318
273
  */
319
- var PENDING_REDIRECT_KEY = 'pendingRedirect';
274
+ const PENDING_REDIRECT_KEY = 'pendingRedirect';
320
275
  // We only get one redirect outcome for any one auth, so just store it
321
276
  // in here.
322
- var redirectOutcomeMap = new Map();
323
- var RedirectAction = /** @class */ (function (_super) {
324
- tslib.__extends(RedirectAction, _super);
325
- function RedirectAction(auth, resolver, bypassAuthState) {
326
- if (bypassAuthState === void 0) { bypassAuthState = false; }
327
- var _this = _super.call(this, auth, [
277
+ const redirectOutcomeMap = new Map();
278
+ class RedirectAction extends AbstractPopupRedirectOperation {
279
+ constructor(auth, resolver, bypassAuthState = false) {
280
+ super(auth, [
328
281
  "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */,
329
282
  "linkViaRedirect" /* AuthEventType.LINK_VIA_REDIRECT */,
330
283
  "reauthViaRedirect" /* AuthEventType.REAUTH_VIA_REDIRECT */,
331
284
  "unknown" /* AuthEventType.UNKNOWN */
332
- ], resolver, undefined, bypassAuthState) || this;
333
- _this.eventId = null;
334
- return _this;
285
+ ], resolver, undefined, bypassAuthState);
286
+ this.eventId = null;
335
287
  }
336
288
  /**
337
289
  * Override the execute function; if we already have a redirect result, then
338
290
  * just return it.
339
291
  */
340
- RedirectAction.prototype.execute = function () {
341
- return tslib.__awaiter(this, void 0, void 0, function () {
342
- var readyOutcome, hasPendingRedirect, result_1, _a, e_1;
343
- return tslib.__generator(this, function (_b) {
344
- switch (_b.label) {
345
- case 0:
346
- readyOutcome = redirectOutcomeMap.get(this.auth._key());
347
- if (!!readyOutcome) return [3 /*break*/, 8];
348
- _b.label = 1;
349
- case 1:
350
- _b.trys.push([1, 6, , 7]);
351
- return [4 /*yield*/, _getAndClearPendingRedirectStatus(this.resolver, this.auth)];
352
- case 2:
353
- hasPendingRedirect = _b.sent();
354
- if (!hasPendingRedirect) return [3 /*break*/, 4];
355
- return [4 /*yield*/, _super.prototype.execute.call(this)];
356
- case 3:
357
- _a = _b.sent();
358
- return [3 /*break*/, 5];
359
- case 4:
360
- _a = null;
361
- _b.label = 5;
362
- case 5:
363
- result_1 = _a;
364
- readyOutcome = function () { return Promise.resolve(result_1); };
365
- return [3 /*break*/, 7];
366
- case 6:
367
- e_1 = _b.sent();
368
- readyOutcome = function () { return Promise.reject(e_1); };
369
- return [3 /*break*/, 7];
370
- case 7:
371
- redirectOutcomeMap.set(this.auth._key(), readyOutcome);
372
- _b.label = 8;
373
- case 8:
374
- // If we're not bypassing auth state, the ready outcome should be set to
375
- // null.
376
- if (!this.bypassAuthState) {
377
- redirectOutcomeMap.set(this.auth._key(), function () { return Promise.resolve(null); });
378
- }
379
- return [2 /*return*/, readyOutcome()];
380
- }
381
- });
382
- });
383
- };
384
- RedirectAction.prototype.onAuthEvent = function (event) {
385
- return tslib.__awaiter(this, void 0, void 0, function () {
386
- var user;
387
- return tslib.__generator(this, function (_a) {
388
- switch (_a.label) {
389
- case 0:
390
- if (event.type === "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */) {
391
- return [2 /*return*/, _super.prototype.onAuthEvent.call(this, event)];
392
- }
393
- else if (event.type === "unknown" /* AuthEventType.UNKNOWN */) {
394
- // This is a sentinel value indicating there's no pending redirect
395
- this.resolve(null);
396
- return [2 /*return*/];
397
- }
398
- if (!event.eventId) return [3 /*break*/, 2];
399
- return [4 /*yield*/, this.auth._redirectUserForId(event.eventId)];
400
- case 1:
401
- user = _a.sent();
402
- if (user) {
403
- this.user = user;
404
- return [2 /*return*/, _super.prototype.onAuthEvent.call(this, event)];
405
- }
406
- else {
407
- this.resolve(null);
408
- }
409
- _a.label = 2;
410
- case 2: return [2 /*return*/];
411
- }
412
- });
413
- });
414
- };
415
- RedirectAction.prototype.onExecution = function () {
416
- return tslib.__awaiter(this, void 0, void 0, function () { return tslib.__generator(this, function (_a) {
417
- return [2 /*return*/];
418
- }); });
419
- };
420
- RedirectAction.prototype.cleanUp = function () { };
421
- return RedirectAction;
422
- }(AbstractPopupRedirectOperation));
423
- function _getAndClearPendingRedirectStatus(resolver, auth) {
424
- return tslib.__awaiter(this, void 0, void 0, function () {
425
- var key, persistence, hasPendingRedirect;
426
- return tslib.__generator(this, function (_a) {
427
- switch (_a.label) {
428
- case 0:
429
- key = pendingRedirectKey(auth);
430
- persistence = resolverPersistence(resolver);
431
- return [4 /*yield*/, persistence._isAvailable()];
432
- case 1:
433
- if (!(_a.sent())) {
434
- return [2 /*return*/, false];
435
- }
436
- return [4 /*yield*/, persistence._get(key)];
437
- case 2:
438
- hasPendingRedirect = (_a.sent()) === 'true';
439
- return [4 /*yield*/, persistence._remove(key)];
440
- case 3:
441
- _a.sent();
442
- return [2 /*return*/, hasPendingRedirect];
292
+ async execute() {
293
+ let readyOutcome = redirectOutcomeMap.get(this.auth._key());
294
+ if (!readyOutcome) {
295
+ try {
296
+ const hasPendingRedirect = await _getAndClearPendingRedirectStatus(this.resolver, this.auth);
297
+ const result = hasPendingRedirect ? await super.execute() : null;
298
+ readyOutcome = () => Promise.resolve(result);
443
299
  }
444
- });
445
- });
300
+ catch (e) {
301
+ readyOutcome = () => Promise.reject(e);
302
+ }
303
+ redirectOutcomeMap.set(this.auth._key(), readyOutcome);
304
+ }
305
+ // If we're not bypassing auth state, the ready outcome should be set to
306
+ // null.
307
+ if (!this.bypassAuthState) {
308
+ redirectOutcomeMap.set(this.auth._key(), () => Promise.resolve(null));
309
+ }
310
+ return readyOutcome();
311
+ }
312
+ async onAuthEvent(event) {
313
+ if (event.type === "signInViaRedirect" /* AuthEventType.SIGN_IN_VIA_REDIRECT */) {
314
+ return super.onAuthEvent(event);
315
+ }
316
+ else if (event.type === "unknown" /* AuthEventType.UNKNOWN */) {
317
+ // This is a sentinel value indicating there's no pending redirect
318
+ this.resolve(null);
319
+ return;
320
+ }
321
+ if (event.eventId) {
322
+ const user = await this.auth._redirectUserForId(event.eventId);
323
+ if (user) {
324
+ this.user = user;
325
+ return super.onAuthEvent(event);
326
+ }
327
+ else {
328
+ this.resolve(null);
329
+ }
330
+ }
331
+ }
332
+ async onExecution() { }
333
+ cleanUp() { }
334
+ }
335
+ async function _getAndClearPendingRedirectStatus(resolver, auth) {
336
+ const key = pendingRedirectKey(auth);
337
+ const persistence = resolverPersistence(resolver);
338
+ if (!(await persistence._isAvailable())) {
339
+ return false;
340
+ }
341
+ const hasPendingRedirect = (await persistence._get(key)) === 'true';
342
+ await persistence._remove(key);
343
+ return hasPendingRedirect;
446
344
  }
447
345
  function _clearRedirectOutcomes() {
448
346
  redirectOutcomeMap.clear();
@@ -473,38 +371,23 @@ function pendingRedirectKey(auth) {
473
371
  * See the License for the specific language governing permissions and
474
372
  * limitations under the License.
475
373
  */
476
- function _getRedirectResult(auth, resolverExtern, bypassAuthState) {
477
- if (bypassAuthState === void 0) { bypassAuthState = false; }
478
- return tslib.__awaiter(this, void 0, void 0, function () {
479
- var authInternal, resolver, action, result;
480
- return tslib.__generator(this, function (_a) {
481
- switch (_a.label) {
482
- case 0:
483
- if (app._isFirebaseServerApp(auth.app)) {
484
- return [2 /*return*/, Promise.reject(totp._serverAppCurrentUserOperationNotSupportedError(auth))];
485
- }
486
- authInternal = totp._castAuth(auth);
487
- resolver = _withDefaultResolver(authInternal, resolverExtern);
488
- action = new RedirectAction(authInternal, resolver, bypassAuthState);
489
- return [4 /*yield*/, action.execute()];
490
- case 1:
491
- result = _a.sent();
492
- if (!(result && !bypassAuthState)) return [3 /*break*/, 4];
493
- delete result.user._redirectEventId;
494
- return [4 /*yield*/, authInternal._persistUserIfCurrent(result.user)];
495
- case 2:
496
- _a.sent();
497
- return [4 /*yield*/, authInternal._setRedirectUser(null, resolverExtern)];
498
- case 3:
499
- _a.sent();
500
- _a.label = 4;
501
- case 4: return [2 /*return*/, result];
502
- }
503
- });
504
- });
374
+ async function _getRedirectResult(auth, resolverExtern, bypassAuthState = false) {
375
+ if (app._isFirebaseServerApp(auth.app)) {
376
+ return Promise.reject(totp._serverAppCurrentUserOperationNotSupportedError(auth));
377
+ }
378
+ const authInternal = totp._castAuth(auth);
379
+ const resolver = _withDefaultResolver(authInternal, resolverExtern);
380
+ const action = new RedirectAction(authInternal, resolver, bypassAuthState);
381
+ const result = await action.execute();
382
+ if (result && !bypassAuthState) {
383
+ delete result.user._redirectEventId;
384
+ await authInternal._persistUserIfCurrent(result.user);
385
+ await authInternal._setRedirectUser(null, resolverExtern);
386
+ }
387
+ return result;
505
388
  }
506
389
 
507
- var STORAGE_AVAILABLE_KEY = '__sak';
390
+ const STORAGE_AVAILABLE_KEY = '__sak';
508
391
 
509
392
  /**
510
393
  * @license
@@ -525,12 +408,12 @@ var STORAGE_AVAILABLE_KEY = '__sak';
525
408
  // There are two different browser persistence types: local and session.
526
409
  // Both have the same implementation but use a different underlying storage
527
410
  // object.
528
- var BrowserPersistenceClass = /** @class */ (function () {
529
- function BrowserPersistenceClass(storageRetriever, type) {
411
+ class BrowserPersistenceClass {
412
+ constructor(storageRetriever, type) {
530
413
  this.storageRetriever = storageRetriever;
531
414
  this.type = type;
532
415
  }
533
- BrowserPersistenceClass.prototype._isAvailable = function () {
416
+ _isAvailable() {
534
417
  try {
535
418
  if (!this.storage) {
536
419
  return Promise.resolve(false);
@@ -542,28 +425,23 @@ var BrowserPersistenceClass = /** @class */ (function () {
542
425
  catch (_a) {
543
426
  return Promise.resolve(false);
544
427
  }
545
- };
546
- BrowserPersistenceClass.prototype._set = function (key, value) {
428
+ }
429
+ _set(key, value) {
547
430
  this.storage.setItem(key, JSON.stringify(value));
548
431
  return Promise.resolve();
549
- };
550
- BrowserPersistenceClass.prototype._get = function (key) {
551
- var json = this.storage.getItem(key);
432
+ }
433
+ _get(key) {
434
+ const json = this.storage.getItem(key);
552
435
  return Promise.resolve(json ? JSON.parse(json) : null);
553
- };
554
- BrowserPersistenceClass.prototype._remove = function (key) {
436
+ }
437
+ _remove(key) {
555
438
  this.storage.removeItem(key);
556
439
  return Promise.resolve();
557
- };
558
- Object.defineProperty(BrowserPersistenceClass.prototype, "storage", {
559
- get: function () {
560
- return this.storageRetriever();
561
- },
562
- enumerable: false,
563
- configurable: true
564
- });
565
- return BrowserPersistenceClass;
566
- }());
440
+ }
441
+ get storage() {
442
+ return this.storageRetriever();
443
+ }
444
+ }
567
445
 
568
446
  /**
569
447
  * @license
@@ -581,29 +459,27 @@ var BrowserPersistenceClass = /** @class */ (function () {
581
459
  * See the License for the specific language governing permissions and
582
460
  * limitations under the License.
583
461
  */
584
- var BrowserSessionPersistence = /** @class */ (function (_super) {
585
- tslib.__extends(BrowserSessionPersistence, _super);
586
- function BrowserSessionPersistence() {
587
- return _super.call(this, function () { return window.sessionStorage; }, "SESSION" /* PersistenceType.SESSION */) || this;
462
+ class BrowserSessionPersistence extends BrowserPersistenceClass {
463
+ constructor() {
464
+ super(() => window.sessionStorage, "SESSION" /* PersistenceType.SESSION */);
588
465
  }
589
- BrowserSessionPersistence.prototype._addListener = function (_key, _listener) {
466
+ _addListener(_key, _listener) {
590
467
  // Listeners are not supported for session storage since it cannot be shared across windows
591
468
  return;
592
- };
593
- BrowserSessionPersistence.prototype._removeListener = function (_key, _listener) {
469
+ }
470
+ _removeListener(_key, _listener) {
594
471
  // Listeners are not supported for session storage since it cannot be shared across windows
595
472
  return;
596
- };
597
- BrowserSessionPersistence.type = 'SESSION';
598
- return BrowserSessionPersistence;
599
- }(BrowserPersistenceClass));
473
+ }
474
+ }
475
+ BrowserSessionPersistence.type = 'SESSION';
600
476
  /**
601
477
  * An implementation of {@link Persistence} of `SESSION` using `sessionStorage`
602
478
  * for the underlying storage.
603
479
  *
604
480
  * @public
605
481
  */
606
- var browserSessionPersistence = BrowserSessionPersistence;
482
+ const browserSessionPersistence = BrowserSessionPersistence;
607
483
 
608
484
  /**
609
485
  * @license
@@ -626,79 +502,69 @@ var browserSessionPersistence = BrowserSessionPersistence;
626
502
  *
627
503
  * @internal
628
504
  */
629
- var WIDGET_PATH = '__/auth/handler';
505
+ const WIDGET_PATH = '__/auth/handler';
630
506
  /**
631
507
  * URL for emulated environment
632
508
  *
633
509
  * @internal
634
510
  */
635
- var EMULATOR_WIDGET_PATH = 'emulator/auth/handler';
511
+ const EMULATOR_WIDGET_PATH = 'emulator/auth/handler';
636
512
  /**
637
513
  * Fragment name for the App Check token that gets passed to the widget
638
514
  *
639
515
  * @internal
640
516
  */
641
- var FIREBASE_APP_CHECK_FRAGMENT_ID = encodeURIComponent('fac');
642
- function _getRedirectUrl(auth, provider, authType, redirectUrl, eventId, additionalParams) {
643
- return tslib.__awaiter(this, void 0, void 0, function () {
644
- var params, _i, _a, _b, key, value, scopes, paramsDict, _c, _d, key, appCheckToken, appCheckTokenFragment;
645
- return tslib.__generator(this, function (_e) {
646
- switch (_e.label) {
647
- case 0:
648
- totp._assert(auth.config.authDomain, auth, "auth-domain-config-required" /* AuthErrorCode.MISSING_AUTH_DOMAIN */);
649
- totp._assert(auth.config.apiKey, auth, "invalid-api-key" /* AuthErrorCode.INVALID_API_KEY */);
650
- params = {
651
- apiKey: auth.config.apiKey,
652
- appName: auth.name,
653
- authType: authType,
654
- redirectUrl: redirectUrl,
655
- v: app.SDK_VERSION,
656
- eventId: eventId
657
- };
658
- if (provider instanceof totp.FederatedAuthProvider) {
659
- provider.setDefaultLanguage(auth.languageCode);
660
- params.providerId = provider.providerId || '';
661
- if (!util.isEmpty(provider.getCustomParameters())) {
662
- params.customParameters = JSON.stringify(provider.getCustomParameters());
663
- }
664
- // TODO set additionalParams from the provider as well?
665
- for (_i = 0, _a = Object.entries(additionalParams || {}); _i < _a.length; _i++) {
666
- _b = _a[_i], key = _b[0], value = _b[1];
667
- params[key] = value;
668
- }
669
- }
670
- if (provider instanceof totp.BaseOAuthProvider) {
671
- scopes = provider.getScopes().filter(function (scope) { return scope !== ''; });
672
- if (scopes.length > 0) {
673
- params.scopes = scopes.join(',');
674
- }
675
- }
676
- if (auth.tenantId) {
677
- params.tid = auth.tenantId;
678
- }
679
- paramsDict = params;
680
- for (_c = 0, _d = Object.keys(paramsDict); _c < _d.length; _c++) {
681
- key = _d[_c];
682
- if (paramsDict[key] === undefined) {
683
- delete paramsDict[key];
684
- }
685
- }
686
- return [4 /*yield*/, auth._getAppCheckToken()];
687
- case 1:
688
- appCheckToken = _e.sent();
689
- appCheckTokenFragment = appCheckToken
690
- ? "#".concat(FIREBASE_APP_CHECK_FRAGMENT_ID, "=").concat(encodeURIComponent(appCheckToken))
691
- : '';
692
- // Start at index 1 to skip the leading '&' in the query string
693
- return [2 /*return*/, "".concat(getHandlerBase(auth), "?").concat(util.querystring(paramsDict).slice(1)).concat(appCheckTokenFragment)];
694
- }
695
- });
696
- });
517
+ const FIREBASE_APP_CHECK_FRAGMENT_ID = encodeURIComponent('fac');
518
+ async function _getRedirectUrl(auth, provider, authType, redirectUrl, eventId, additionalParams) {
519
+ totp._assert(auth.config.authDomain, auth, "auth-domain-config-required" /* AuthErrorCode.MISSING_AUTH_DOMAIN */);
520
+ totp._assert(auth.config.apiKey, auth, "invalid-api-key" /* AuthErrorCode.INVALID_API_KEY */);
521
+ const params = {
522
+ apiKey: auth.config.apiKey,
523
+ appName: auth.name,
524
+ authType,
525
+ redirectUrl,
526
+ v: app.SDK_VERSION,
527
+ eventId
528
+ };
529
+ if (provider instanceof totp.FederatedAuthProvider) {
530
+ provider.setDefaultLanguage(auth.languageCode);
531
+ params.providerId = provider.providerId || '';
532
+ if (!util.isEmpty(provider.getCustomParameters())) {
533
+ params.customParameters = JSON.stringify(provider.getCustomParameters());
534
+ }
535
+ // TODO set additionalParams from the provider as well?
536
+ for (const [key, value] of Object.entries(additionalParams || {})) {
537
+ params[key] = value;
538
+ }
539
+ }
540
+ if (provider instanceof totp.BaseOAuthProvider) {
541
+ const scopes = provider.getScopes().filter(scope => scope !== '');
542
+ if (scopes.length > 0) {
543
+ params.scopes = scopes.join(',');
544
+ }
545
+ }
546
+ if (auth.tenantId) {
547
+ params.tid = auth.tenantId;
548
+ }
549
+ // TODO: maybe set eid as endpointId
550
+ // TODO: maybe set fw as Frameworks.join(",")
551
+ const paramsDict = params;
552
+ for (const key of Object.keys(paramsDict)) {
553
+ if (paramsDict[key] === undefined) {
554
+ delete paramsDict[key];
555
+ }
556
+ }
557
+ // Sets the App Check token to pass to the widget
558
+ const appCheckToken = await auth._getAppCheckToken();
559
+ const appCheckTokenFragment = appCheckToken
560
+ ? `#${FIREBASE_APP_CHECK_FRAGMENT_ID}=${encodeURIComponent(appCheckToken)}`
561
+ : '';
562
+ // Start at index 1 to skip the leading '&' in the query string
563
+ return `${getHandlerBase(auth)}?${util.querystring(paramsDict).slice(1)}${appCheckTokenFragment}`;
697
564
  }
698
- function getHandlerBase(_a) {
699
- var config = _a.config;
565
+ function getHandlerBase({ config }) {
700
566
  if (!config.emulator) {
701
- return "https://".concat(config.authDomain, "/").concat(WIDGET_PATH);
567
+ return `https://${config.authDomain}/${WIDGET_PATH}`;
702
568
  }
703
569
  return totp._emulatorUrl(config, EMULATOR_WIDGET_PATH);
704
570
  }
@@ -739,13 +605,8 @@ function _cordovaWindow() {
739
605
  * See the License for the specific language governing permissions and
740
606
  * limitations under the License.
741
607
  */
742
- function _getProjectConfig(auth, request) {
743
- if (request === void 0) { request = {}; }
744
- return tslib.__awaiter(this, void 0, void 0, function () {
745
- return tslib.__generator(this, function (_a) {
746
- return [2 /*return*/, totp._performApiRequest(auth, "GET" /* HttpMethod.GET */, "/v1/projects" /* Endpoint.GET_PROJECT_CONFIG */, request)];
747
- });
748
- });
608
+ async function _getProjectConfig(auth, request = {}) {
609
+ return totp._performApiRequest(auth, "GET" /* HttpMethod.GET */, "/v1/projects" /* Endpoint.GET_PROJECT_CONFIG */, request);
749
610
  }
750
611
 
751
612
  /**
@@ -768,81 +629,60 @@ function _getProjectConfig(auth, request) {
768
629
  * How long to wait after the app comes back into focus before concluding that
769
630
  * the user closed the sign in tab.
770
631
  */
771
- var REDIRECT_TIMEOUT_MS = 2000;
632
+ const REDIRECT_TIMEOUT_MS = 2000;
772
633
  /**
773
634
  * Generates the URL for the OAuth handler.
774
635
  */
775
- function _generateHandlerUrl(auth, event, provider) {
636
+ async function _generateHandlerUrl(auth, event, provider) {
776
637
  var _a;
777
- return tslib.__awaiter(this, void 0, void 0, function () {
778
- var BuildInfo, sessionDigest, additionalParams;
779
- return tslib.__generator(this, function (_b) {
780
- switch (_b.label) {
781
- case 0:
782
- BuildInfo = _cordovaWindow().BuildInfo;
783
- totp.debugAssert(event.sessionId, 'AuthEvent did not contain a session ID');
784
- return [4 /*yield*/, computeSha256(event.sessionId)];
785
- case 1:
786
- sessionDigest = _b.sent();
787
- additionalParams = {};
788
- if (totp._isIOS()) {
789
- // iOS app identifier
790
- additionalParams['ibi'] = BuildInfo.packageName;
791
- }
792
- else if (totp._isAndroid()) {
793
- // Android app identifier
794
- additionalParams['apn'] = BuildInfo.packageName;
795
- }
796
- else {
797
- totp._fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
798
- }
799
- // Add the display name if available
800
- if (BuildInfo.displayName) {
801
- additionalParams['appDisplayName'] = BuildInfo.displayName;
802
- }
803
- // Attached the hashed session ID
804
- additionalParams['sessionId'] = sessionDigest;
805
- return [2 /*return*/, _getRedirectUrl(auth, provider, event.type, undefined, (_a = event.eventId) !== null && _a !== void 0 ? _a : undefined, additionalParams)];
806
- }
807
- });
808
- });
638
+ // Get the cordova plugins
639
+ const { BuildInfo } = _cordovaWindow();
640
+ totp.debugAssert(event.sessionId, 'AuthEvent did not contain a session ID');
641
+ const sessionDigest = await computeSha256(event.sessionId);
642
+ const additionalParams = {};
643
+ if (totp._isIOS()) {
644
+ // iOS app identifier
645
+ additionalParams['ibi'] = BuildInfo.packageName;
646
+ }
647
+ else if (totp._isAndroid()) {
648
+ // Android app identifier
649
+ additionalParams['apn'] = BuildInfo.packageName;
650
+ }
651
+ else {
652
+ totp._fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
653
+ }
654
+ // Add the display name if available
655
+ if (BuildInfo.displayName) {
656
+ additionalParams['appDisplayName'] = BuildInfo.displayName;
657
+ }
658
+ // Attached the hashed session ID
659
+ additionalParams['sessionId'] = sessionDigest;
660
+ return _getRedirectUrl(auth, provider, event.type, undefined, (_a = event.eventId) !== null && _a !== void 0 ? _a : undefined, additionalParams);
809
661
  }
810
662
  /**
811
663
  * Validates that this app is valid for this project configuration
812
664
  */
813
- function _validateOrigin(auth) {
814
- return tslib.__awaiter(this, void 0, void 0, function () {
815
- var BuildInfo, request;
816
- return tslib.__generator(this, function (_a) {
817
- switch (_a.label) {
818
- case 0:
819
- BuildInfo = _cordovaWindow().BuildInfo;
820
- request = {};
821
- if (totp._isIOS()) {
822
- request.iosBundleId = BuildInfo.packageName;
823
- }
824
- else if (totp._isAndroid()) {
825
- request.androidPackageName = BuildInfo.packageName;
826
- }
827
- else {
828
- totp._fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
829
- }
830
- // Will fail automatically if package name is not authorized
831
- return [4 /*yield*/, _getProjectConfig(auth, request)];
832
- case 1:
833
- // Will fail automatically if package name is not authorized
834
- _a.sent();
835
- return [2 /*return*/];
836
- }
837
- });
838
- });
665
+ async function _validateOrigin(auth) {
666
+ const { BuildInfo } = _cordovaWindow();
667
+ const request = {};
668
+ if (totp._isIOS()) {
669
+ request.iosBundleId = BuildInfo.packageName;
670
+ }
671
+ else if (totp._isAndroid()) {
672
+ request.androidPackageName = BuildInfo.packageName;
673
+ }
674
+ else {
675
+ totp._fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
676
+ }
677
+ // Will fail automatically if package name is not authorized
678
+ await _getProjectConfig(auth, request);
839
679
  }
840
680
  function _performRedirect(handlerUrl) {
841
681
  // Get the cordova plugins
842
- var cordova = _cordovaWindow().cordova;
843
- return new Promise(function (resolve) {
844
- cordova.plugins.browsertab.isAvailable(function (browserTabIsAvailable) {
845
- var iabRef = null;
682
+ const { cordova } = _cordovaWindow();
683
+ return new Promise(resolve => {
684
+ cordova.plugins.browsertab.isAvailable(browserTabIsAvailable => {
685
+ let iabRef = null;
846
686
  if (browserTabIsAvailable) {
847
687
  cordova.plugins.browsertab.openUrl(handlerUrl);
848
688
  }
@@ -860,78 +700,66 @@ function _performRedirect(handlerUrl) {
860
700
  * to be visible, this promise resolves. AFTER that resolution, the listeners
861
701
  * are detached and any browser tabs left open will be closed.
862
702
  */
863
- function _waitForAppResume(auth, eventListener, iabRef) {
864
- return tslib.__awaiter(this, void 0, void 0, function () {
865
- var cordova, cleanup;
866
- return tslib.__generator(this, function (_a) {
867
- switch (_a.label) {
868
- case 0:
869
- cordova = _cordovaWindow().cordova;
870
- cleanup = function () { };
871
- _a.label = 1;
872
- case 1:
873
- _a.trys.push([1, , 3, 4]);
874
- return [4 /*yield*/, new Promise(function (resolve, reject) {
875
- var onCloseTimer = null;
876
- // DEFINE ALL THE CALLBACKS =====
877
- function authEventSeen() {
878
- var _a;
879
- // Auth event was detected. Resolve this promise and close the extra
880
- // window if it's still open.
881
- resolve();
882
- var closeBrowserTab = (_a = cordova.plugins.browsertab) === null || _a === void 0 ? void 0 : _a.close;
883
- if (typeof closeBrowserTab === 'function') {
884
- closeBrowserTab();
885
- }
886
- // Close inappbrowser embedded webview in iOS7 and 8 case if still
887
- // open.
888
- if (typeof (iabRef === null || iabRef === void 0 ? void 0 : iabRef.close) === 'function') {
889
- iabRef.close();
890
- }
891
- }
892
- function resumed() {
893
- if (onCloseTimer) {
894
- // This code already ran; do not rerun.
895
- return;
896
- }
897
- onCloseTimer = window.setTimeout(function () {
898
- // Wait two seconds after resume then reject.
899
- reject(totp._createError(auth, "redirect-cancelled-by-user" /* AuthErrorCode.REDIRECT_CANCELLED_BY_USER */));
900
- }, REDIRECT_TIMEOUT_MS);
901
- }
902
- function visibilityChanged() {
903
- if ((document === null || document === void 0 ? void 0 : document.visibilityState) === 'visible') {
904
- resumed();
905
- }
906
- }
907
- // ATTACH ALL THE LISTENERS =====
908
- // Listen for the auth event
909
- eventListener.addPassiveListener(authEventSeen);
910
- // Listen for resume and visibility events
911
- document.addEventListener('resume', resumed, false);
912
- if (totp._isAndroid()) {
913
- document.addEventListener('visibilitychange', visibilityChanged, false);
914
- }
915
- // SETUP THE CLEANUP FUNCTION =====
916
- cleanup = function () {
917
- eventListener.removePassiveListener(authEventSeen);
918
- document.removeEventListener('resume', resumed, false);
919
- document.removeEventListener('visibilitychange', visibilityChanged, false);
920
- if (onCloseTimer) {
921
- window.clearTimeout(onCloseTimer);
922
- }
923
- };
924
- })];
925
- case 2:
926
- _a.sent();
927
- return [3 /*break*/, 4];
928
- case 3:
929
- cleanup();
930
- return [7 /*endfinally*/];
931
- case 4: return [2 /*return*/];
703
+ async function _waitForAppResume(auth, eventListener, iabRef) {
704
+ // Get the cordova plugins
705
+ const { cordova } = _cordovaWindow();
706
+ let cleanup = () => { };
707
+ try {
708
+ await new Promise((resolve, reject) => {
709
+ let onCloseTimer = null;
710
+ // DEFINE ALL THE CALLBACKS =====
711
+ function authEventSeen() {
712
+ var _a;
713
+ // Auth event was detected. Resolve this promise and close the extra
714
+ // window if it's still open.
715
+ resolve();
716
+ const closeBrowserTab = (_a = cordova.plugins.browsertab) === null || _a === void 0 ? void 0 : _a.close;
717
+ if (typeof closeBrowserTab === 'function') {
718
+ closeBrowserTab();
719
+ }
720
+ // Close inappbrowser embedded webview in iOS7 and 8 case if still
721
+ // open.
722
+ if (typeof (iabRef === null || iabRef === void 0 ? void 0 : iabRef.close) === 'function') {
723
+ iabRef.close();
724
+ }
932
725
  }
726
+ function resumed() {
727
+ if (onCloseTimer) {
728
+ // This code already ran; do not rerun.
729
+ return;
730
+ }
731
+ onCloseTimer = window.setTimeout(() => {
732
+ // Wait two seconds after resume then reject.
733
+ reject(totp._createError(auth, "redirect-cancelled-by-user" /* AuthErrorCode.REDIRECT_CANCELLED_BY_USER */));
734
+ }, REDIRECT_TIMEOUT_MS);
735
+ }
736
+ function visibilityChanged() {
737
+ if ((document === null || document === void 0 ? void 0 : document.visibilityState) === 'visible') {
738
+ resumed();
739
+ }
740
+ }
741
+ // ATTACH ALL THE LISTENERS =====
742
+ // Listen for the auth event
743
+ eventListener.addPassiveListener(authEventSeen);
744
+ // Listen for resume and visibility events
745
+ document.addEventListener('resume', resumed, false);
746
+ if (totp._isAndroid()) {
747
+ document.addEventListener('visibilitychange', visibilityChanged, false);
748
+ }
749
+ // SETUP THE CLEANUP FUNCTION =====
750
+ cleanup = () => {
751
+ eventListener.removePassiveListener(authEventSeen);
752
+ document.removeEventListener('resume', resumed, false);
753
+ document.removeEventListener('visibilitychange', visibilityChanged, false);
754
+ if (onCloseTimer) {
755
+ window.clearTimeout(onCloseTimer);
756
+ }
757
+ };
933
758
  });
934
- });
759
+ }
760
+ finally {
761
+ cleanup();
762
+ }
935
763
  }
936
764
  /**
937
765
  * Checks the configuration of the Cordova environment. This has no side effect
@@ -940,7 +768,7 @@ function _waitForAppResume(auth, eventListener, iabRef) {
940
768
  */
941
769
  function _checkCordovaConfiguration(auth) {
942
770
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
943
- var win = _cordovaWindow();
771
+ const win = _cordovaWindow();
944
772
  // Check all dependencies installed.
945
773
  // https://github.com/nordnet/cordova-universal-links-plugin
946
774
  // Note that cordova-universal-links-plugin has been abandoned.
@@ -970,21 +798,15 @@ function _checkCordovaConfiguration(auth) {
970
798
  * available in "secure" contexts, which covers Cordova (which is served on a file
971
799
  * protocol).
972
800
  */
973
- function computeSha256(sessionId) {
974
- return tslib.__awaiter(this, void 0, void 0, function () {
975
- var bytes, buf, arr;
976
- return tslib.__generator(this, function (_a) {
977
- switch (_a.label) {
978
- case 0:
979
- bytes = stringToArrayBuffer(sessionId);
980
- return [4 /*yield*/, crypto.subtle.digest('SHA-256', bytes)];
981
- case 1:
982
- buf = _a.sent();
983
- arr = Array.from(new Uint8Array(buf));
984
- return [2 /*return*/, arr.map(function (num) { return num.toString(16).padStart(2, '0'); }).join('')];
985
- }
986
- });
987
- });
801
+ async function computeSha256(sessionId) {
802
+ const bytes = stringToArrayBuffer(sessionId);
803
+ // TODO: For IE11 crypto has a different name and this operation comes back
804
+ // as an object, not a promise. This is the old proposed standard that
805
+ // is used by IE11:
806
+ // https://www.w3.org/TR/2013/WD-WebCryptoAPI-20130108/#cryptooperation-interface
807
+ const buf = await crypto.subtle.digest('SHA-256', bytes);
808
+ const arr = Array.from(new Uint8Array(buf));
809
+ return arr.map(num => num.toString(16).padStart(2, '0')).join('');
988
810
  }
989
811
  function stringToArrayBuffer(str) {
990
812
  // This function is only meant to deal with an ASCII charset and makes
@@ -993,9 +815,9 @@ function stringToArrayBuffer(str) {
993
815
  if (typeof TextEncoder !== 'undefined') {
994
816
  return new TextEncoder().encode(str);
995
817
  }
996
- var buff = new ArrayBuffer(str.length);
997
- var view = new Uint8Array(buff);
998
- for (var i = 0; i < str.length; i++) {
818
+ const buff = new ArrayBuffer(str.length);
819
+ const view = new Uint8Array(buff);
820
+ for (let i = 0; i < str.length; i++) {
999
821
  view[i] = str.charCodeAt(i);
1000
822
  }
1001
823
  return view;
@@ -1019,9 +841,9 @@ function stringToArrayBuffer(str) {
1019
841
  */
1020
842
  // The amount of time to store the UIDs of seen events; this is
1021
843
  // set to 10 min by default
1022
- var EVENT_DUPLICATION_CACHE_DURATION_MS = 10 * 60 * 1000;
1023
- var AuthEventManager = /** @class */ (function () {
1024
- function AuthEventManager(auth) {
844
+ const EVENT_DUPLICATION_CACHE_DURATION_MS = 10 * 60 * 1000;
845
+ class AuthEventManager {
846
+ constructor(auth) {
1025
847
  this.auth = auth;
1026
848
  this.cachedEventUids = new Set();
1027
849
  this.consumers = new Set();
@@ -1029,7 +851,7 @@ var AuthEventManager = /** @class */ (function () {
1029
851
  this.hasHandledPotentialRedirect = false;
1030
852
  this.lastProcessedEventTime = Date.now();
1031
853
  }
1032
- AuthEventManager.prototype.registerConsumer = function (authEventConsumer) {
854
+ registerConsumer(authEventConsumer) {
1033
855
  this.consumers.add(authEventConsumer);
1034
856
  if (this.queuedRedirectEvent &&
1035
857
  this.isEventForConsumer(this.queuedRedirectEvent, authEventConsumer)) {
@@ -1037,22 +859,21 @@ var AuthEventManager = /** @class */ (function () {
1037
859
  this.saveEventToCache(this.queuedRedirectEvent);
1038
860
  this.queuedRedirectEvent = null;
1039
861
  }
1040
- };
1041
- AuthEventManager.prototype.unregisterConsumer = function (authEventConsumer) {
862
+ }
863
+ unregisterConsumer(authEventConsumer) {
1042
864
  this.consumers.delete(authEventConsumer);
1043
- };
1044
- AuthEventManager.prototype.onEvent = function (event) {
1045
- var _this = this;
865
+ }
866
+ onEvent(event) {
1046
867
  // Check if the event has already been handled
1047
868
  if (this.hasEventBeenHandled(event)) {
1048
869
  return false;
1049
870
  }
1050
- var handled = false;
1051
- this.consumers.forEach(function (consumer) {
1052
- if (_this.isEventForConsumer(event, consumer)) {
871
+ let handled = false;
872
+ this.consumers.forEach(consumer => {
873
+ if (this.isEventForConsumer(event, consumer)) {
1053
874
  handled = true;
1054
- _this.sendToConsumer(event, consumer);
1055
- _this.saveEventToCache(event);
875
+ this.sendToConsumer(event, consumer);
876
+ this.saveEventToCache(event);
1056
877
  }
1057
878
  });
1058
879
  if (this.hasHandledPotentialRedirect || !isRedirectEvent(event)) {
@@ -1067,43 +888,41 @@ var AuthEventManager = /** @class */ (function () {
1067
888
  handled = true;
1068
889
  }
1069
890
  return handled;
1070
- };
1071
- AuthEventManager.prototype.sendToConsumer = function (event, consumer) {
891
+ }
892
+ sendToConsumer(event, consumer) {
1072
893
  var _a;
1073
894
  if (event.error && !isNullRedirectEvent(event)) {
1074
- var code = ((_a = event.error.code) === null || _a === void 0 ? void 0 : _a.split('auth/')[1]) ||
895
+ const code = ((_a = event.error.code) === null || _a === void 0 ? void 0 : _a.split('auth/')[1]) ||
1075
896
  "internal-error" /* AuthErrorCode.INTERNAL_ERROR */;
1076
897
  consumer.onError(totp._createError(this.auth, code));
1077
898
  }
1078
899
  else {
1079
900
  consumer.onAuthEvent(event);
1080
901
  }
1081
- };
1082
- AuthEventManager.prototype.isEventForConsumer = function (event, consumer) {
1083
- var eventIdMatches = consumer.eventId === null ||
902
+ }
903
+ isEventForConsumer(event, consumer) {
904
+ const eventIdMatches = consumer.eventId === null ||
1084
905
  (!!event.eventId && event.eventId === consumer.eventId);
1085
906
  return consumer.filter.includes(event.type) && eventIdMatches;
1086
- };
1087
- AuthEventManager.prototype.hasEventBeenHandled = function (event) {
907
+ }
908
+ hasEventBeenHandled(event) {
1088
909
  if (Date.now() - this.lastProcessedEventTime >=
1089
910
  EVENT_DUPLICATION_CACHE_DURATION_MS) {
1090
911
  this.cachedEventUids.clear();
1091
912
  }
1092
913
  return this.cachedEventUids.has(eventUid(event));
1093
- };
1094
- AuthEventManager.prototype.saveEventToCache = function (event) {
914
+ }
915
+ saveEventToCache(event) {
1095
916
  this.cachedEventUids.add(eventUid(event));
1096
917
  this.lastProcessedEventTime = Date.now();
1097
- };
1098
- return AuthEventManager;
1099
- }());
918
+ }
919
+ }
1100
920
  function eventUid(e) {
1101
- return [e.type, e.eventId, e.sessionId, e.tenantId].filter(function (v) { return v; }).join('-');
921
+ return [e.type, e.eventId, e.sessionId, e.tenantId].filter(v => v).join('-');
1102
922
  }
1103
- function isNullRedirectEvent(_a) {
1104
- var type = _a.type, error = _a.error;
923
+ function isNullRedirectEvent({ type, error }) {
1105
924
  return (type === "unknown" /* AuthEventType.UNKNOWN */ &&
1106
- (error === null || error === void 0 ? void 0 : error.code) === "auth/".concat("no-auth-event" /* AuthErrorCode.NO_AUTH_EVENT */));
925
+ (error === null || error === void 0 ? void 0 : error.code) === `auth/${"no-auth-event" /* AuthErrorCode.NO_AUTH_EVENT */}`);
1107
926
  }
1108
927
  function isRedirectEvent(event) {
1109
928
  switch (event.type) {
@@ -1135,49 +954,44 @@ function isRedirectEvent(event) {
1135
954
  * limitations under the License.
1136
955
  */
1137
956
  // The polling period in case events are not supported
1138
- var _POLLING_INTERVAL_MS = 1000;
957
+ const _POLLING_INTERVAL_MS = 1000;
1139
958
  // The IE 10 localStorage cross tab synchronization delay in milliseconds
1140
- var IE10_LOCAL_STORAGE_SYNC_DELAY = 10;
1141
- var BrowserLocalPersistence = /** @class */ (function (_super) {
1142
- tslib.__extends(BrowserLocalPersistence, _super);
1143
- function BrowserLocalPersistence() {
1144
- var _this = _super.call(this, function () { return window.localStorage; }, "LOCAL" /* PersistenceType.LOCAL */) || this;
1145
- _this.boundEventHandler = function (event, poll) { return _this.onStorageEvent(event, poll); };
1146
- _this.listeners = {};
1147
- _this.localCache = {};
959
+ const IE10_LOCAL_STORAGE_SYNC_DELAY = 10;
960
+ class BrowserLocalPersistence extends BrowserPersistenceClass {
961
+ constructor() {
962
+ super(() => window.localStorage, "LOCAL" /* PersistenceType.LOCAL */);
963
+ this.boundEventHandler = (event, poll) => this.onStorageEvent(event, poll);
964
+ this.listeners = {};
965
+ this.localCache = {};
1148
966
  // setTimeout return value is platform specific
1149
967
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
1150
- _this.pollTimer = null;
968
+ this.pollTimer = null;
1151
969
  // Whether to use polling instead of depending on window events
1152
- _this.fallbackToPolling = totp._isMobileBrowser();
1153
- _this._shouldAllowMigration = true;
1154
- return _this;
970
+ this.fallbackToPolling = totp._isMobileBrowser();
971
+ this._shouldAllowMigration = true;
1155
972
  }
1156
- BrowserLocalPersistence.prototype.forAllChangedKeys = function (cb) {
973
+ forAllChangedKeys(cb) {
1157
974
  // Check all keys with listeners on them.
1158
- for (var _i = 0, _a = Object.keys(this.listeners); _i < _a.length; _i++) {
1159
- var key = _a[_i];
975
+ for (const key of Object.keys(this.listeners)) {
1160
976
  // Get value from localStorage.
1161
- var newValue = this.storage.getItem(key);
1162
- var oldValue = this.localCache[key];
977
+ const newValue = this.storage.getItem(key);
978
+ const oldValue = this.localCache[key];
1163
979
  // If local map value does not match, trigger listener with storage event.
1164
980
  // Differentiate this simulated event from the real storage event.
1165
981
  if (newValue !== oldValue) {
1166
982
  cb(key, oldValue, newValue);
1167
983
  }
1168
984
  }
1169
- };
1170
- BrowserLocalPersistence.prototype.onStorageEvent = function (event, poll) {
1171
- var _this = this;
1172
- if (poll === void 0) { poll = false; }
985
+ }
986
+ onStorageEvent(event, poll = false) {
1173
987
  // Key would be null in some situations, like when localStorage is cleared
1174
988
  if (!event.key) {
1175
- this.forAllChangedKeys(function (key, _oldValue, newValue) {
1176
- _this.notifyListeners(key, newValue);
989
+ this.forAllChangedKeys((key, _oldValue, newValue) => {
990
+ this.notifyListeners(key, newValue);
1177
991
  });
1178
992
  return;
1179
993
  }
1180
- var key = event.key;
994
+ const key = event.key;
1181
995
  // Check the mechanism how this event was detected.
1182
996
  // The first event will dictate the mechanism to be used.
1183
997
  if (poll) {
@@ -1190,18 +1004,18 @@ var BrowserLocalPersistence = /** @class */ (function (_super) {
1190
1004
  // Remove polling listener to prevent possible event duplication.
1191
1005
  this.stopPolling();
1192
1006
  }
1193
- var triggerListeners = function () {
1007
+ const triggerListeners = () => {
1194
1008
  // Keep local map up to date in case storage event is triggered before
1195
1009
  // poll.
1196
- var storedValue = _this.storage.getItem(key);
1197
- if (!poll && _this.localCache[key] === storedValue) {
1010
+ const storedValue = this.storage.getItem(key);
1011
+ if (!poll && this.localCache[key] === storedValue) {
1198
1012
  // Real storage event which has already been detected, do nothing.
1199
1013
  // This seems to trigger in some IE browsers for some reason.
1200
1014
  return;
1201
1015
  }
1202
- _this.notifyListeners(key, storedValue);
1016
+ this.notifyListeners(key, storedValue);
1203
1017
  };
1204
- var storedValue = this.storage.getItem(key);
1018
+ const storedValue = this.storage.getItem(key);
1205
1019
  if (totp._isIE10() &&
1206
1020
  storedValue !== event.newValue &&
1207
1021
  event.newValue !== event.oldValue) {
@@ -1214,44 +1028,42 @@ var BrowserLocalPersistence = /** @class */ (function (_super) {
1214
1028
  else {
1215
1029
  triggerListeners();
1216
1030
  }
1217
- };
1218
- BrowserLocalPersistence.prototype.notifyListeners = function (key, value) {
1031
+ }
1032
+ notifyListeners(key, value) {
1219
1033
  this.localCache[key] = value;
1220
- var listeners = this.listeners[key];
1034
+ const listeners = this.listeners[key];
1221
1035
  if (listeners) {
1222
- for (var _i = 0, _a = Array.from(listeners); _i < _a.length; _i++) {
1223
- var listener = _a[_i];
1036
+ for (const listener of Array.from(listeners)) {
1224
1037
  listener(value ? JSON.parse(value) : value);
1225
1038
  }
1226
1039
  }
1227
- };
1228
- BrowserLocalPersistence.prototype.startPolling = function () {
1229
- var _this = this;
1040
+ }
1041
+ startPolling() {
1230
1042
  this.stopPolling();
1231
- this.pollTimer = setInterval(function () {
1232
- _this.forAllChangedKeys(function (key, oldValue, newValue) {
1233
- _this.onStorageEvent(new StorageEvent('storage', {
1234
- key: key,
1235
- oldValue: oldValue,
1236
- newValue: newValue
1043
+ this.pollTimer = setInterval(() => {
1044
+ this.forAllChangedKeys((key, oldValue, newValue) => {
1045
+ this.onStorageEvent(new StorageEvent('storage', {
1046
+ key,
1047
+ oldValue,
1048
+ newValue
1237
1049
  }),
1238
1050
  /* poll */ true);
1239
1051
  });
1240
1052
  }, _POLLING_INTERVAL_MS);
1241
- };
1242
- BrowserLocalPersistence.prototype.stopPolling = function () {
1053
+ }
1054
+ stopPolling() {
1243
1055
  if (this.pollTimer) {
1244
1056
  clearInterval(this.pollTimer);
1245
1057
  this.pollTimer = null;
1246
1058
  }
1247
- };
1248
- BrowserLocalPersistence.prototype.attachListener = function () {
1059
+ }
1060
+ attachListener() {
1249
1061
  window.addEventListener('storage', this.boundEventHandler);
1250
- };
1251
- BrowserLocalPersistence.prototype.detachListener = function () {
1062
+ }
1063
+ detachListener() {
1252
1064
  window.removeEventListener('storage', this.boundEventHandler);
1253
- };
1254
- BrowserLocalPersistence.prototype._addListener = function (key, listener) {
1065
+ }
1066
+ _addListener(key, listener) {
1255
1067
  if (Object.keys(this.listeners).length === 0) {
1256
1068
  // Whether browser can detect storage event when it had already been pushed to the background.
1257
1069
  // This may happen in some mobile browsers. A localStorage change in the foreground window
@@ -1270,8 +1082,8 @@ var BrowserLocalPersistence = /** @class */ (function (_super) {
1270
1082
  this.localCache[key] = this.storage.getItem(key);
1271
1083
  }
1272
1084
  this.listeners[key].add(listener);
1273
- };
1274
- BrowserLocalPersistence.prototype._removeListener = function (key, listener) {
1085
+ }
1086
+ _removeListener(key, listener) {
1275
1087
  if (this.listeners[key]) {
1276
1088
  this.listeners[key].delete(listener);
1277
1089
  if (this.listeners[key].size === 0) {
@@ -1282,58 +1094,30 @@ var BrowserLocalPersistence = /** @class */ (function (_super) {
1282
1094
  this.detachListener();
1283
1095
  this.stopPolling();
1284
1096
  }
1285
- };
1097
+ }
1286
1098
  // Update local cache on base operations:
1287
- BrowserLocalPersistence.prototype._set = function (key, value) {
1288
- return tslib.__awaiter(this, void 0, void 0, function () {
1289
- return tslib.__generator(this, function (_a) {
1290
- switch (_a.label) {
1291
- case 0: return [4 /*yield*/, _super.prototype._set.call(this, key, value)];
1292
- case 1:
1293
- _a.sent();
1294
- this.localCache[key] = JSON.stringify(value);
1295
- return [2 /*return*/];
1296
- }
1297
- });
1298
- });
1299
- };
1300
- BrowserLocalPersistence.prototype._get = function (key) {
1301
- return tslib.__awaiter(this, void 0, void 0, function () {
1302
- var value;
1303
- return tslib.__generator(this, function (_a) {
1304
- switch (_a.label) {
1305
- case 0: return [4 /*yield*/, _super.prototype._get.call(this, key)];
1306
- case 1:
1307
- value = _a.sent();
1308
- this.localCache[key] = JSON.stringify(value);
1309
- return [2 /*return*/, value];
1310
- }
1311
- });
1312
- });
1313
- };
1314
- BrowserLocalPersistence.prototype._remove = function (key) {
1315
- return tslib.__awaiter(this, void 0, void 0, function () {
1316
- return tslib.__generator(this, function (_a) {
1317
- switch (_a.label) {
1318
- case 0: return [4 /*yield*/, _super.prototype._remove.call(this, key)];
1319
- case 1:
1320
- _a.sent();
1321
- delete this.localCache[key];
1322
- return [2 /*return*/];
1323
- }
1324
- });
1325
- });
1326
- };
1327
- BrowserLocalPersistence.type = 'LOCAL';
1328
- return BrowserLocalPersistence;
1329
- }(BrowserPersistenceClass));
1099
+ async _set(key, value) {
1100
+ await super._set(key, value);
1101
+ this.localCache[key] = JSON.stringify(value);
1102
+ }
1103
+ async _get(key) {
1104
+ const value = await super._get(key);
1105
+ this.localCache[key] = JSON.stringify(value);
1106
+ return value;
1107
+ }
1108
+ async _remove(key) {
1109
+ await super._remove(key);
1110
+ delete this.localCache[key];
1111
+ }
1112
+ }
1113
+ BrowserLocalPersistence.type = 'LOCAL';
1330
1114
  /**
1331
1115
  * An implementation of {@link Persistence} of type `LOCAL` using `localStorage`
1332
1116
  * for the underlying storage.
1333
1117
  *
1334
1118
  * @public
1335
1119
  */
1336
- var browserLocalPersistence = BrowserLocalPersistence;
1120
+ const browserLocalPersistence = BrowserLocalPersistence;
1337
1121
 
1338
1122
  /**
1339
1123
  * @license
@@ -1351,58 +1135,45 @@ var browserLocalPersistence = BrowserLocalPersistence;
1351
1135
  * See the License for the specific language governing permissions and
1352
1136
  * limitations under the License.
1353
1137
  */
1354
- var SESSION_ID_LENGTH = 20;
1138
+ const SESSION_ID_LENGTH = 20;
1355
1139
  /** Custom AuthEventManager that adds passive listeners to events */
1356
- var CordovaAuthEventManager = /** @class */ (function (_super) {
1357
- tslib.__extends(CordovaAuthEventManager, _super);
1358
- function CordovaAuthEventManager() {
1359
- var _this = _super !== null && _super.apply(this, arguments) || this;
1360
- _this.passiveListeners = new Set();
1361
- _this.initPromise = new Promise(function (resolve) {
1362
- _this.resolveInitialized = resolve;
1140
+ class CordovaAuthEventManager extends AuthEventManager {
1141
+ constructor() {
1142
+ super(...arguments);
1143
+ this.passiveListeners = new Set();
1144
+ this.initPromise = new Promise(resolve => {
1145
+ this.resolveInitialized = resolve;
1363
1146
  });
1364
- return _this;
1365
1147
  }
1366
- CordovaAuthEventManager.prototype.addPassiveListener = function (cb) {
1148
+ addPassiveListener(cb) {
1367
1149
  this.passiveListeners.add(cb);
1368
- };
1369
- CordovaAuthEventManager.prototype.removePassiveListener = function (cb) {
1150
+ }
1151
+ removePassiveListener(cb) {
1370
1152
  this.passiveListeners.delete(cb);
1371
- };
1153
+ }
1372
1154
  // In a Cordova environment, this manager can live through multiple redirect
1373
1155
  // operations
1374
- CordovaAuthEventManager.prototype.resetRedirect = function () {
1156
+ resetRedirect() {
1375
1157
  this.queuedRedirectEvent = null;
1376
1158
  this.hasHandledPotentialRedirect = false;
1377
- };
1159
+ }
1378
1160
  /** Override the onEvent method */
1379
- CordovaAuthEventManager.prototype.onEvent = function (event) {
1161
+ onEvent(event) {
1380
1162
  this.resolveInitialized();
1381
- this.passiveListeners.forEach(function (cb) { return cb(event); });
1382
- return _super.prototype.onEvent.call(this, event);
1383
- };
1384
- CordovaAuthEventManager.prototype.initialized = function () {
1385
- return tslib.__awaiter(this, void 0, void 0, function () {
1386
- return tslib.__generator(this, function (_a) {
1387
- switch (_a.label) {
1388
- case 0: return [4 /*yield*/, this.initPromise];
1389
- case 1:
1390
- _a.sent();
1391
- return [2 /*return*/];
1392
- }
1393
- });
1394
- });
1395
- };
1396
- return CordovaAuthEventManager;
1397
- }(AuthEventManager));
1163
+ this.passiveListeners.forEach(cb => cb(event));
1164
+ return super.onEvent(event);
1165
+ }
1166
+ async initialized() {
1167
+ await this.initPromise;
1168
+ }
1169
+ }
1398
1170
  /**
1399
1171
  * Generates a (partial) {@link AuthEvent}.
1400
1172
  */
1401
- function _generateNewEvent(auth, type, eventId) {
1402
- if (eventId === void 0) { eventId = null; }
1173
+ function _generateNewEvent(auth, type, eventId = null) {
1403
1174
  return {
1404
- type: type,
1405
- eventId: eventId,
1175
+ type,
1176
+ eventId,
1406
1177
  urlResponse: null,
1407
1178
  sessionId: generateSessionId(),
1408
1179
  postBody: null,
@@ -1413,28 +1184,17 @@ function _generateNewEvent(auth, type, eventId) {
1413
1184
  function _savePartialEvent(auth, event) {
1414
1185
  return storage()._set(persistenceKey(auth), event);
1415
1186
  }
1416
- function _getAndRemoveEvent(auth) {
1417
- return tslib.__awaiter(this, void 0, void 0, function () {
1418
- var event;
1419
- return tslib.__generator(this, function (_a) {
1420
- switch (_a.label) {
1421
- case 0: return [4 /*yield*/, storage()._get(persistenceKey(auth))];
1422
- case 1:
1423
- event = (_a.sent());
1424
- if (!event) return [3 /*break*/, 3];
1425
- return [4 /*yield*/, storage()._remove(persistenceKey(auth))];
1426
- case 2:
1427
- _a.sent();
1428
- _a.label = 3;
1429
- case 3: return [2 /*return*/, event];
1430
- }
1431
- });
1432
- });
1187
+ async function _getAndRemoveEvent(auth) {
1188
+ const event = (await storage()._get(persistenceKey(auth)));
1189
+ if (event) {
1190
+ await storage()._remove(persistenceKey(auth));
1191
+ }
1192
+ return event;
1433
1193
  }
1434
1194
  function _eventFromPartialAndUrl(partialEvent, url) {
1435
1195
  var _a, _b;
1436
1196
  // Parse the deep link within the dynamic link URL.
1437
- var callbackUrl = _getDeepLinkFromCallback(url);
1197
+ const callbackUrl = _getDeepLinkFromCallback(url);
1438
1198
  // Confirm it is actually a callback URL.
1439
1199
  // Currently the universal link will be of this format:
1440
1200
  // https://<AUTH_DOMAIN>/__/auth/callback<OAUTH_RESPONSE>
@@ -1444,19 +1204,19 @@ function _eventFromPartialAndUrl(partialEvent, url) {
1444
1204
  // Check if there is an error in the URL.
1445
1205
  // This mechanism is also used to pass errors back to the app:
1446
1206
  // https://<AUTH_DOMAIN>/__/auth/callback?firebaseError=<STRINGIFIED_ERROR>
1447
- var params = searchParamsOrEmpty(callbackUrl);
1207
+ const params = searchParamsOrEmpty(callbackUrl);
1448
1208
  // Get the error object corresponding to the stringified error if found.
1449
- var errorObject = params['firebaseError']
1209
+ const errorObject = params['firebaseError']
1450
1210
  ? parseJsonOrNull(decodeURIComponent(params['firebaseError']))
1451
1211
  : null;
1452
- var 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];
1453
- var error = code ? totp._createError(code) : null;
1212
+ 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];
1213
+ const error = code ? totp._createError(code) : null;
1454
1214
  if (error) {
1455
1215
  return {
1456
1216
  type: partialEvent.type,
1457
1217
  eventId: partialEvent.eventId,
1458
1218
  tenantId: partialEvent.tenantId,
1459
- error: error,
1219
+ error,
1460
1220
  urlResponse: null,
1461
1221
  sessionId: null,
1462
1222
  postBody: null
@@ -1476,10 +1236,10 @@ function _eventFromPartialAndUrl(partialEvent, url) {
1476
1236
  return null;
1477
1237
  }
1478
1238
  function generateSessionId() {
1479
- var chars = [];
1480
- var allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
1481
- for (var i = 0; i < SESSION_ID_LENGTH; i++) {
1482
- var idx = Math.floor(Math.random() * allowedChars.length);
1239
+ const chars = [];
1240
+ const allowedChars = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
1241
+ for (let i = 0; i < SESSION_ID_LENGTH; i++) {
1242
+ const idx = Math.floor(Math.random() * allowedChars.length);
1483
1243
  chars.push(allowedChars.charAt(idx));
1484
1244
  }
1485
1245
  return chars.join('');
@@ -1500,15 +1260,15 @@ function parseJsonOrNull(json) {
1500
1260
  }
1501
1261
  // Exported for testing
1502
1262
  function _getDeepLinkFromCallback(url) {
1503
- var params = searchParamsOrEmpty(url);
1504
- var link = params['link'] ? decodeURIComponent(params['link']) : undefined;
1263
+ const params = searchParamsOrEmpty(url);
1264
+ const link = params['link'] ? decodeURIComponent(params['link']) : undefined;
1505
1265
  // Double link case (automatic redirect)
1506
- var doubleDeepLink = searchParamsOrEmpty(link)['link'];
1266
+ const doubleDeepLink = searchParamsOrEmpty(link)['link'];
1507
1267
  // iOS custom scheme links.
1508
- var iOSDeepLink = params['deep_link_id']
1268
+ const iOSDeepLink = params['deep_link_id']
1509
1269
  ? decodeURIComponent(params['deep_link_id'])
1510
1270
  : undefined;
1511
- var iOSDoubleDeepLink = searchParamsOrEmpty(iOSDeepLink)['link'];
1271
+ const iOSDoubleDeepLink = searchParamsOrEmpty(iOSDeepLink)['link'];
1512
1272
  return iOSDoubleDeepLink || iOSDeepLink || doubleDeepLink || link || url;
1513
1273
  }
1514
1274
  /**
@@ -1519,7 +1279,7 @@ function searchParamsOrEmpty(url) {
1519
1279
  if (!(url === null || url === void 0 ? void 0 : url.includes('?'))) {
1520
1280
  return {};
1521
1281
  }
1522
- var _a = url.split('?'); _a[0]; var rest = _a.slice(1);
1282
+ const [_, ...rest] = url.split('?');
1523
1283
  return util.querystringDecode(rest.join('?'));
1524
1284
  }
1525
1285
 
@@ -1543,9 +1303,9 @@ function searchParamsOrEmpty(url) {
1543
1303
  * How long to wait for the initial auth event before concluding no
1544
1304
  * redirect pending
1545
1305
  */
1546
- var INITIAL_EVENT_TIMEOUT_MS = 500;
1547
- var CordovaPopupRedirectResolver = /** @class */ (function () {
1548
- function CordovaPopupRedirectResolver() {
1306
+ const INITIAL_EVENT_TIMEOUT_MS = 500;
1307
+ class CordovaPopupRedirectResolver {
1308
+ constructor() {
1549
1309
  this._redirectPersistence = browserSessionPersistence;
1550
1310
  this._shouldInitProactively = true; // This is lightweight for Cordova
1551
1311
  this.eventManagers = new Map();
@@ -1553,110 +1313,65 @@ var CordovaPopupRedirectResolver = /** @class */ (function () {
1553
1313
  this._completeRedirectFn = _getRedirectResult;
1554
1314
  this._overrideRedirectResult = _overrideRedirectResult;
1555
1315
  }
1556
- CordovaPopupRedirectResolver.prototype._initialize = function (auth) {
1557
- return tslib.__awaiter(this, void 0, void 0, function () {
1558
- var key, manager;
1559
- return tslib.__generator(this, function (_a) {
1560
- key = auth._key();
1561
- manager = this.eventManagers.get(key);
1562
- if (!manager) {
1563
- manager = new CordovaAuthEventManager(auth);
1564
- this.eventManagers.set(key, manager);
1565
- this.attachCallbackListeners(auth, manager);
1566
- }
1567
- return [2 /*return*/, manager];
1568
- });
1569
- });
1570
- };
1571
- CordovaPopupRedirectResolver.prototype._openPopup = function (auth) {
1316
+ async _initialize(auth) {
1317
+ const key = auth._key();
1318
+ let manager = this.eventManagers.get(key);
1319
+ if (!manager) {
1320
+ manager = new CordovaAuthEventManager(auth);
1321
+ this.eventManagers.set(key, manager);
1322
+ this.attachCallbackListeners(auth, manager);
1323
+ }
1324
+ return manager;
1325
+ }
1326
+ _openPopup(auth) {
1572
1327
  totp._fail(auth, "operation-not-supported-in-this-environment" /* AuthErrorCode.OPERATION_NOT_SUPPORTED */);
1573
- };
1574
- CordovaPopupRedirectResolver.prototype._openRedirect = function (auth, provider, authType, eventId) {
1575
- return tslib.__awaiter(this, void 0, void 0, function () {
1576
- var manager, event, url, iabRef;
1577
- return tslib.__generator(this, function (_a) {
1578
- switch (_a.label) {
1579
- case 0:
1580
- _checkCordovaConfiguration(auth);
1581
- return [4 /*yield*/, this._initialize(auth)];
1582
- case 1:
1583
- manager = _a.sent();
1584
- return [4 /*yield*/, manager.initialized()];
1585
- case 2:
1586
- _a.sent();
1587
- // Reset the persisted redirect states. This does not matter on Web where
1588
- // the redirect always blows away application state entirely. On Cordova,
1589
- // the app maintains control flow through the redirect.
1590
- manager.resetRedirect();
1591
- _clearRedirectOutcomes();
1592
- return [4 /*yield*/, this._originValidation(auth)];
1593
- case 3:
1594
- _a.sent();
1595
- event = _generateNewEvent(auth, authType, eventId);
1596
- return [4 /*yield*/, _savePartialEvent(auth, event)];
1597
- case 4:
1598
- _a.sent();
1599
- return [4 /*yield*/, _generateHandlerUrl(auth, event, provider)];
1600
- case 5:
1601
- url = _a.sent();
1602
- return [4 /*yield*/, _performRedirect(url)];
1603
- case 6:
1604
- iabRef = _a.sent();
1605
- return [2 /*return*/, _waitForAppResume(auth, manager, iabRef)];
1606
- }
1607
- });
1608
- });
1609
- };
1610
- CordovaPopupRedirectResolver.prototype._isIframeWebStorageSupported = function (_auth, _cb) {
1328
+ }
1329
+ async _openRedirect(auth, provider, authType, eventId) {
1330
+ _checkCordovaConfiguration(auth);
1331
+ const manager = await this._initialize(auth);
1332
+ await manager.initialized();
1333
+ // Reset the persisted redirect states. This does not matter on Web where
1334
+ // the redirect always blows away application state entirely. On Cordova,
1335
+ // the app maintains control flow through the redirect.
1336
+ manager.resetRedirect();
1337
+ _clearRedirectOutcomes();
1338
+ await this._originValidation(auth);
1339
+ const event = _generateNewEvent(auth, authType, eventId);
1340
+ await _savePartialEvent(auth, event);
1341
+ const url = await _generateHandlerUrl(auth, event, provider);
1342
+ const iabRef = await _performRedirect(url);
1343
+ return _waitForAppResume(auth, manager, iabRef);
1344
+ }
1345
+ _isIframeWebStorageSupported(_auth, _cb) {
1611
1346
  throw new Error('Method not implemented.');
1612
- };
1613
- CordovaPopupRedirectResolver.prototype._originValidation = function (auth) {
1614
- var key = auth._key();
1347
+ }
1348
+ _originValidation(auth) {
1349
+ const key = auth._key();
1615
1350
  if (!this.originValidationPromises[key]) {
1616
1351
  this.originValidationPromises[key] = _validateOrigin(auth);
1617
1352
  }
1618
1353
  return this.originValidationPromises[key];
1619
- };
1620
- CordovaPopupRedirectResolver.prototype.attachCallbackListeners = function (auth, manager) {
1621
- var _this = this;
1354
+ }
1355
+ attachCallbackListeners(auth, manager) {
1622
1356
  // Get the global plugins
1623
- var _a = _cordovaWindow(), universalLinks = _a.universalLinks, handleOpenURL = _a.handleOpenURL, BuildInfo = _a.BuildInfo;
1624
- var noEventTimeout = setTimeout(function () { return tslib.__awaiter(_this, void 0, void 0, function () {
1625
- return tslib.__generator(this, function (_a) {
1626
- switch (_a.label) {
1627
- case 0:
1628
- // We didn't see that initial event. Clear any pending object and
1629
- // dispatch no event
1630
- return [4 /*yield*/, _getAndRemoveEvent(auth)];
1631
- case 1:
1632
- // We didn't see that initial event. Clear any pending object and
1633
- // dispatch no event
1634
- _a.sent();
1635
- manager.onEvent(generateNoEvent());
1636
- return [2 /*return*/];
1637
- }
1638
- });
1639
- }); }, INITIAL_EVENT_TIMEOUT_MS);
1640
- var universalLinksCb = function (eventData) { return tslib.__awaiter(_this, void 0, void 0, function () {
1641
- var partialEvent, finalEvent;
1642
- return tslib.__generator(this, function (_a) {
1643
- switch (_a.label) {
1644
- case 0:
1645
- // We have an event so we can clear the no event timeout
1646
- clearTimeout(noEventTimeout);
1647
- return [4 /*yield*/, _getAndRemoveEvent(auth)];
1648
- case 1:
1649
- partialEvent = _a.sent();
1650
- finalEvent = null;
1651
- if (partialEvent && (eventData === null || eventData === void 0 ? void 0 : eventData['url'])) {
1652
- finalEvent = _eventFromPartialAndUrl(partialEvent, eventData['url']);
1653
- }
1654
- // If finalEvent is never filled, trigger with no event
1655
- manager.onEvent(finalEvent || generateNoEvent());
1656
- return [2 /*return*/];
1657
- }
1658
- });
1659
- }); };
1357
+ const { universalLinks, handleOpenURL, BuildInfo } = _cordovaWindow();
1358
+ const noEventTimeout = setTimeout(async () => {
1359
+ // We didn't see that initial event. Clear any pending object and
1360
+ // dispatch no event
1361
+ await _getAndRemoveEvent(auth);
1362
+ manager.onEvent(generateNoEvent());
1363
+ }, INITIAL_EVENT_TIMEOUT_MS);
1364
+ const universalLinksCb = async (eventData) => {
1365
+ // We have an event so we can clear the no event timeout
1366
+ clearTimeout(noEventTimeout);
1367
+ const partialEvent = await _getAndRemoveEvent(auth);
1368
+ let finalEvent = null;
1369
+ if (partialEvent && (eventData === null || eventData === void 0 ? void 0 : eventData['url'])) {
1370
+ finalEvent = _eventFromPartialAndUrl(partialEvent, eventData['url']);
1371
+ }
1372
+ // If finalEvent is never filled, trigger with no event
1373
+ manager.onEvent(finalEvent || generateNoEvent());
1374
+ };
1660
1375
  // Universal links subscriber doesn't exist for iOS, so we need to check
1661
1376
  if (typeof universalLinks !== 'undefined' &&
1662
1377
  typeof universalLinks.subscribe === 'function') {
@@ -1667,38 +1382,34 @@ var CordovaPopupRedirectResolver = /** @class */ (function () {
1667
1382
  // For this to work, cordova-plugin-customurlscheme needs to be installed.
1668
1383
  // https://github.com/EddyVerbruggen/Custom-URL-scheme
1669
1384
  // Do not overwrite the existing developer's URL handler.
1670
- var existingHandleOpenURL = handleOpenURL;
1671
- var packagePrefix = "".concat(BuildInfo.packageName.toLowerCase(), "://");
1672
- _cordovaWindow().handleOpenURL = function (url) { return tslib.__awaiter(_this, void 0, void 0, function () {
1673
- return tslib.__generator(this, function (_a) {
1674
- if (url.toLowerCase().startsWith(packagePrefix)) {
1675
- // We want this intentionally to float
1676
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
1677
- universalLinksCb({ url: url });
1385
+ const existingHandleOpenURL = handleOpenURL;
1386
+ const packagePrefix = `${BuildInfo.packageName.toLowerCase()}://`;
1387
+ _cordovaWindow().handleOpenURL = async (url) => {
1388
+ if (url.toLowerCase().startsWith(packagePrefix)) {
1389
+ // We want this intentionally to float
1390
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
1391
+ universalLinksCb({ url });
1392
+ }
1393
+ // Call the developer's handler if it is present.
1394
+ if (typeof existingHandleOpenURL === 'function') {
1395
+ try {
1396
+ existingHandleOpenURL(url);
1678
1397
  }
1679
- // Call the developer's handler if it is present.
1680
- if (typeof existingHandleOpenURL === 'function') {
1681
- try {
1682
- existingHandleOpenURL(url);
1683
- }
1684
- catch (e) {
1685
- // This is a developer error. Don't stop the flow of the SDK.
1686
- console.error(e);
1687
- }
1398
+ catch (e) {
1399
+ // This is a developer error. Don't stop the flow of the SDK.
1400
+ console.error(e);
1688
1401
  }
1689
- return [2 /*return*/];
1690
- });
1691
- }); };
1692
- };
1693
- return CordovaPopupRedirectResolver;
1694
- }());
1402
+ }
1403
+ };
1404
+ }
1405
+ }
1695
1406
  /**
1696
1407
  * An implementation of {@link PopupRedirectResolver} suitable for Cordova
1697
1408
  * based applications.
1698
1409
  *
1699
1410
  * @public
1700
1411
  */
1701
- var cordovaPopupRedirectResolver = CordovaPopupRedirectResolver;
1412
+ const cordovaPopupRedirectResolver = CordovaPopupRedirectResolver;
1702
1413
  function generateNoEvent() {
1703
1414
  return {
1704
1415
  type: "unknown" /* AuthEventType.UNKNOWN */,