@oxy.so/services 4.0.7 → 6.1.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 (403) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/assets/assets/signIn/slide-1.jpg +0 -0
  3. package/lib/commonjs/assets/assets/signIn/slide-1.jpg.d.ts +3 -0
  4. package/lib/commonjs/assets/assets/signIn/slide-2.jpg +0 -0
  5. package/lib/commonjs/assets/assets/signIn/slide-2.jpg.d.ts +3 -0
  6. package/lib/commonjs/assets/assets/signIn/slide-3.jpg +0 -0
  7. package/lib/commonjs/assets/assets/signIn/slide-3.jpg.d.ts +3 -0
  8. package/lib/commonjs/assets/assets/signIn/slide-4.jpg +0 -0
  9. package/lib/commonjs/assets/assets/signIn/slide-4.jpg.d.ts +3 -0
  10. package/lib/commonjs/assets/signIn/slide-1.jpg +0 -0
  11. package/lib/commonjs/assets/signIn/slide-2.jpg +0 -0
  12. package/lib/commonjs/assets/signIn/slide-3.jpg +0 -0
  13. package/lib/commonjs/assets/signIn/slide-4.jpg +0 -0
  14. package/lib/commonjs/index.js +77 -8
  15. package/lib/commonjs/index.js.map +1 -1
  16. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +11 -58
  17. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
  18. package/lib/commonjs/ui/components/OxyAuthChooser.js +36 -45
  19. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  20. package/lib/commonjs/ui/components/OxyProvider.js +0 -2
  21. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  22. package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
  23. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +30 -16
  24. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  25. package/lib/commonjs/ui/components/authChooser/primitives.js +7 -52
  26. package/lib/commonjs/ui/components/authChooser/primitives.js.map +1 -1
  27. package/lib/commonjs/ui/components/authChooser/signInFailureMessage.js +1 -7
  28. package/lib/commonjs/ui/components/authChooser/signInFailureMessage.js.map +1 -1
  29. package/lib/commonjs/ui/components/authChooser/styles.js +0 -31
  30. package/lib/commonjs/ui/components/authChooser/styles.js.map +1 -1
  31. package/lib/commonjs/ui/components/authChooser/types.js +2 -2
  32. package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
  33. package/lib/commonjs/ui/components/oauthNavigation.js +1 -1
  34. package/lib/commonjs/ui/components/signIn/InlineCommonsQr.js +161 -0
  35. package/lib/commonjs/ui/components/signIn/InlineCommonsQr.js.map +1 -0
  36. package/lib/commonjs/ui/components/signIn/OxyAccountPicker.js +111 -0
  37. package/lib/commonjs/ui/components/signIn/OxyAccountPicker.js.map +1 -0
  38. package/lib/commonjs/ui/components/signIn/OxyAuthScreen.js +160 -0
  39. package/lib/commonjs/ui/components/signIn/OxyAuthScreen.js.map +1 -0
  40. package/lib/commonjs/ui/components/signIn/OxyCreateAccountPanel.js +236 -0
  41. package/lib/commonjs/ui/components/signIn/OxyCreateAccountPanel.js.map +1 -0
  42. package/lib/commonjs/ui/components/signIn/OxyDeleteAccountPanel.js +114 -0
  43. package/lib/commonjs/ui/components/signIn/OxyDeleteAccountPanel.js.map +1 -0
  44. package/lib/commonjs/ui/components/signIn/OxyLinkCommonsPanel.js +275 -0
  45. package/lib/commonjs/ui/components/signIn/OxyLinkCommonsPanel.js.map +1 -0
  46. package/lib/commonjs/ui/components/signIn/OxyRecoverAccountPanel.js +170 -0
  47. package/lib/commonjs/ui/components/signIn/OxyRecoverAccountPanel.js.map +1 -0
  48. package/lib/commonjs/ui/components/signIn/OxySignInPanel.js +371 -0
  49. package/lib/commonjs/ui/components/signIn/OxySignInPanel.js.map +1 -0
  50. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js +78 -0
  51. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js.map +1 -0
  52. package/lib/commonjs/ui/components/signIn/accountFlowParts.js +244 -0
  53. package/lib/commonjs/ui/components/signIn/accountFlowParts.js.map +1 -0
  54. package/lib/commonjs/ui/components/signIn/artwork.js +21 -0
  55. package/lib/commonjs/ui/components/signIn/artwork.js.map +1 -0
  56. package/lib/commonjs/ui/components/signIn/passkeyError.js +46 -0
  57. package/lib/commonjs/ui/components/signIn/passkeyError.js.map +1 -0
  58. package/lib/commonjs/ui/components/signIn/signInMethods.js +46 -0
  59. package/lib/commonjs/ui/components/signIn/signInMethods.js.map +1 -0
  60. package/lib/commonjs/ui/context/OxyContext.js +16 -16
  61. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  62. package/lib/commonjs/ui/context/commitSessionFlow.js +0 -43
  63. package/lib/commonjs/ui/context/commitSessionFlow.js.map +1 -1
  64. package/lib/commonjs/ui/context/passkeyFlow.js +22 -0
  65. package/lib/commonjs/ui/context/passkeyFlow.js.map +1 -1
  66. package/lib/commonjs/ui/hooks/accountDialogSnapshot.js +15 -1
  67. package/lib/commonjs/ui/hooks/accountDialogSnapshot.js.map +1 -1
  68. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js +1 -3
  69. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js.map +1 -1
  70. package/lib/commonjs/ui/oauth/browserAuthTransport.js +11 -4
  71. package/lib/commonjs/ui/oauth/browserAuthTransport.js.map +1 -1
  72. package/lib/commonjs/ui/oauth/oauthHandshake.js +3 -0
  73. package/lib/commonjs/ui/oauth/oauthHandshake.js.map +1 -1
  74. package/lib/commonjs/ui/oauth/oauthPopup.js +2 -3
  75. package/lib/commonjs/ui/oauth/oauthPopup.js.map +1 -1
  76. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +0 -23
  77. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js.map +1 -1
  78. package/lib/commonjs/ui/screens/EditProfileScreen.js +0 -8
  79. package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -1
  80. package/lib/commonjs/ui/screens/ManageAccountScreen.js +3 -4
  81. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  82. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +1 -1
  83. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  84. package/lib/commonjs/ui/session/authStore.js +0 -21
  85. package/lib/commonjs/ui/session/authStore.js.map +1 -1
  86. package/lib/commonjs/ui/utils/accountDeletionHandoff.js +2 -2
  87. package/lib/commonjs/ui/utils/accountDeletionHandoff.js.map +1 -1
  88. package/lib/module/assets/assets/signIn/slide-1.jpg +0 -0
  89. package/lib/module/assets/assets/signIn/slide-1.jpg.d.ts +3 -0
  90. package/lib/module/assets/assets/signIn/slide-2.jpg +0 -0
  91. package/lib/module/assets/assets/signIn/slide-2.jpg.d.ts +3 -0
  92. package/lib/module/assets/assets/signIn/slide-3.jpg +0 -0
  93. package/lib/module/assets/assets/signIn/slide-3.jpg.d.ts +3 -0
  94. package/lib/module/assets/assets/signIn/slide-4.jpg +0 -0
  95. package/lib/module/assets/assets/signIn/slide-4.jpg.d.ts +3 -0
  96. package/lib/module/assets/signIn/slide-1.jpg +0 -0
  97. package/lib/module/assets/signIn/slide-2.jpg +0 -0
  98. package/lib/module/assets/signIn/slide-3.jpg +0 -0
  99. package/lib/module/assets/signIn/slide-4.jpg +0 -0
  100. package/lib/module/index.js +14 -6
  101. package/lib/module/index.js.map +1 -1
  102. package/lib/module/ui/components/OxyAccountDialogScreen.js +14 -59
  103. package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
  104. package/lib/module/ui/components/OxyAuthChooser.js +37 -46
  105. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  106. package/lib/module/ui/components/OxyProvider.js +0 -2
  107. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  108. package/lib/module/ui/components/ProfileButton.js.map +1 -1
  109. package/lib/module/ui/components/authChooser/AccountsMenuView.js +22 -10
  110. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  111. package/lib/module/ui/components/authChooser/primitives.js +1 -44
  112. package/lib/module/ui/components/authChooser/primitives.js.map +1 -1
  113. package/lib/module/ui/components/authChooser/signInFailureMessage.js +1 -7
  114. package/lib/module/ui/components/authChooser/signInFailureMessage.js.map +1 -1
  115. package/lib/module/ui/components/authChooser/styles.js +0 -31
  116. package/lib/module/ui/components/authChooser/styles.js.map +1 -1
  117. package/lib/module/ui/components/authChooser/types.js +2 -2
  118. package/lib/module/ui/components/authChooser/types.js.map +1 -1
  119. package/lib/module/ui/components/oauthNavigation.js +1 -1
  120. package/lib/module/ui/components/signIn/InlineCommonsQr.js +157 -0
  121. package/lib/module/ui/components/signIn/InlineCommonsQr.js.map +1 -0
  122. package/lib/module/ui/components/signIn/OxyAccountPicker.js +106 -0
  123. package/lib/module/ui/components/signIn/OxyAccountPicker.js.map +1 -0
  124. package/lib/module/ui/components/signIn/OxyAuthScreen.js +151 -0
  125. package/lib/module/ui/components/signIn/OxyAuthScreen.js.map +1 -0
  126. package/lib/module/ui/components/signIn/OxyCreateAccountPanel.js +231 -0
  127. package/lib/module/ui/components/signIn/OxyCreateAccountPanel.js.map +1 -0
  128. package/lib/module/ui/components/signIn/OxyDeleteAccountPanel.js +109 -0
  129. package/lib/module/ui/components/signIn/OxyDeleteAccountPanel.js.map +1 -0
  130. package/lib/module/ui/components/signIn/OxyLinkCommonsPanel.js +270 -0
  131. package/lib/module/ui/components/signIn/OxyLinkCommonsPanel.js.map +1 -0
  132. package/lib/module/ui/components/signIn/OxyRecoverAccountPanel.js +165 -0
  133. package/lib/module/ui/components/signIn/OxyRecoverAccountPanel.js.map +1 -0
  134. package/lib/module/ui/components/signIn/OxySignInPanel.js +366 -0
  135. package/lib/module/ui/components/signIn/OxySignInPanel.js.map +1 -0
  136. package/lib/module/ui/components/signIn/OxySignUpPanel.js +75 -0
  137. package/lib/module/ui/components/signIn/OxySignUpPanel.js.map +1 -0
  138. package/lib/module/ui/components/signIn/accountFlowParts.js +235 -0
  139. package/lib/module/ui/components/signIn/accountFlowParts.js.map +1 -0
  140. package/lib/module/ui/components/signIn/artwork.js +16 -0
  141. package/lib/module/ui/components/signIn/artwork.js.map +1 -0
  142. package/lib/module/ui/components/signIn/passkeyError.js +40 -0
  143. package/lib/module/ui/components/signIn/passkeyError.js.map +1 -0
  144. package/lib/module/ui/components/signIn/signInMethods.js +42 -0
  145. package/lib/module/ui/components/signIn/signInMethods.js.map +1 -0
  146. package/lib/module/ui/context/OxyContext.js +17 -17
  147. package/lib/module/ui/context/OxyContext.js.map +1 -1
  148. package/lib/module/ui/context/commitSessionFlow.js +0 -42
  149. package/lib/module/ui/context/commitSessionFlow.js.map +1 -1
  150. package/lib/module/ui/context/passkeyFlow.js +21 -0
  151. package/lib/module/ui/context/passkeyFlow.js.map +1 -1
  152. package/lib/module/ui/hooks/accountDialogSnapshot.js +14 -1
  153. package/lib/module/ui/hooks/accountDialogSnapshot.js.map +1 -1
  154. package/lib/module/ui/hooks/useDeviceSwitcher.js +3 -5
  155. package/lib/module/ui/hooks/useDeviceSwitcher.js.map +1 -1
  156. package/lib/module/ui/oauth/browserAuthTransport.js +11 -4
  157. package/lib/module/ui/oauth/browserAuthTransport.js.map +1 -1
  158. package/lib/module/ui/oauth/oauthHandshake.js +3 -0
  159. package/lib/module/ui/oauth/oauthHandshake.js.map +1 -1
  160. package/lib/module/ui/oauth/oauthPopup.js +2 -3
  161. package/lib/module/ui/oauth/oauthPopup.js.map +1 -1
  162. package/lib/module/ui/screens/EditProfileFieldScreen.js +1 -24
  163. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  164. package/lib/module/ui/screens/EditProfileScreen.js +0 -8
  165. package/lib/module/ui/screens/EditProfileScreen.js.map +1 -1
  166. package/lib/module/ui/screens/ManageAccountScreen.js +4 -5
  167. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  168. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +1 -1
  169. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  170. package/lib/module/ui/session/authStore.js +1 -22
  171. package/lib/module/ui/session/authStore.js.map +1 -1
  172. package/lib/module/ui/utils/accountDeletionHandoff.js +3 -3
  173. package/lib/module/ui/utils/accountDeletionHandoff.js.map +1 -1
  174. package/lib/typescript/assets/signIn/slide-1.jpg.d.ts +3 -0
  175. package/lib/typescript/assets/signIn/slide-2.jpg.d.ts +3 -0
  176. package/lib/typescript/assets/signIn/slide-3.jpg.d.ts +3 -0
  177. package/lib/typescript/assets/signIn/slide-4.jpg.d.ts +3 -0
  178. package/lib/typescript/commonjs/index.d.ts +16 -2
  179. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  180. package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  181. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +5 -12
  182. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  183. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  184. package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts +1 -1
  185. package/lib/typescript/commonjs/ui/components/ProfileButton.d.ts.map +1 -1
  186. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  187. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts +0 -19
  188. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts.map +1 -1
  189. package/lib/typescript/commonjs/ui/components/authChooser/signInFailureMessage.d.ts +1 -5
  190. package/lib/typescript/commonjs/ui/components/authChooser/signInFailureMessage.d.ts.map +1 -1
  191. package/lib/typescript/commonjs/ui/components/authChooser/styles.d.ts +0 -31
  192. package/lib/typescript/commonjs/ui/components/authChooser/styles.d.ts.map +1 -1
  193. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +2 -7
  194. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
  195. package/lib/typescript/commonjs/ui/components/oauthNavigation.d.ts +1 -1
  196. package/lib/typescript/commonjs/ui/components/signIn/InlineCommonsQr.d.ts +20 -0
  197. package/lib/typescript/commonjs/ui/components/signIn/InlineCommonsQr.d.ts.map +1 -0
  198. package/lib/typescript/commonjs/ui/components/signIn/OxyAccountPicker.d.ts +34 -0
  199. package/lib/typescript/commonjs/ui/components/signIn/OxyAccountPicker.d.ts.map +1 -0
  200. package/lib/typescript/commonjs/ui/components/signIn/OxyAuthScreen.d.ts +43 -0
  201. package/lib/typescript/commonjs/ui/components/signIn/OxyAuthScreen.d.ts.map +1 -0
  202. package/lib/typescript/commonjs/ui/components/signIn/OxyCreateAccountPanel.d.ts +24 -0
  203. package/lib/typescript/commonjs/ui/components/signIn/OxyCreateAccountPanel.d.ts.map +1 -0
  204. package/lib/typescript/commonjs/ui/components/signIn/OxyDeleteAccountPanel.d.ts +16 -0
  205. package/lib/typescript/commonjs/ui/components/signIn/OxyDeleteAccountPanel.d.ts.map +1 -0
  206. package/lib/typescript/commonjs/ui/components/signIn/OxyLinkCommonsPanel.d.ts +21 -0
  207. package/lib/typescript/commonjs/ui/components/signIn/OxyLinkCommonsPanel.d.ts.map +1 -0
  208. package/lib/typescript/commonjs/ui/components/signIn/OxyRecoverAccountPanel.d.ts +20 -0
  209. package/lib/typescript/commonjs/ui/components/signIn/OxyRecoverAccountPanel.d.ts.map +1 -0
  210. package/lib/typescript/commonjs/ui/components/signIn/OxySignInPanel.d.ts +43 -0
  211. package/lib/typescript/commonjs/ui/components/signIn/OxySignInPanel.d.ts.map +1 -0
  212. package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts +17 -0
  213. package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -0
  214. package/lib/typescript/commonjs/ui/components/signIn/accountFlowParts.d.ts +60 -0
  215. package/lib/typescript/commonjs/ui/components/signIn/accountFlowParts.d.ts.map +1 -0
  216. package/lib/typescript/commonjs/ui/components/signIn/artwork.d.ts +8 -0
  217. package/lib/typescript/commonjs/ui/components/signIn/artwork.d.ts.map +1 -0
  218. package/lib/typescript/commonjs/ui/components/signIn/passkeyError.d.ts +16 -0
  219. package/lib/typescript/commonjs/ui/components/signIn/passkeyError.d.ts.map +1 -0
  220. package/lib/typescript/commonjs/ui/components/signIn/signInMethods.d.ts +39 -0
  221. package/lib/typescript/commonjs/ui/components/signIn/signInMethods.d.ts.map +1 -0
  222. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  223. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts +0 -40
  224. package/lib/typescript/commonjs/ui/context/commitSessionFlow.d.ts.map +1 -1
  225. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +15 -10
  226. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  227. package/lib/typescript/commonjs/ui/context/passkeyFlow.d.ts +16 -1
  228. package/lib/typescript/commonjs/ui/context/passkeyFlow.d.ts.map +1 -1
  229. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts +7 -1
  230. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  231. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  232. package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts.map +1 -1
  233. package/lib/typescript/commonjs/ui/oauth/browserAuthTransport.d.ts +9 -0
  234. package/lib/typescript/commonjs/ui/oauth/browserAuthTransport.d.ts.map +1 -1
  235. package/lib/typescript/commonjs/ui/oauth/oauthHandshake.d.ts +3 -0
  236. package/lib/typescript/commonjs/ui/oauth/oauthHandshake.d.ts.map +1 -1
  237. package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts +2 -3
  238. package/lib/typescript/commonjs/ui/oauth/oauthPopup.d.ts.map +1 -1
  239. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts +1 -1
  240. package/lib/typescript/commonjs/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  241. package/lib/typescript/commonjs/ui/screens/EditProfileScreen.d.ts.map +1 -1
  242. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  243. package/lib/typescript/commonjs/ui/session/authStore.d.ts +0 -30
  244. package/lib/typescript/commonjs/ui/session/authStore.d.ts.map +1 -1
  245. package/lib/typescript/commonjs/ui/types/navigation.d.ts +0 -26
  246. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  247. package/lib/typescript/module/index.d.ts +16 -2
  248. package/lib/typescript/module/index.d.ts.map +1 -1
  249. package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  250. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +5 -12
  251. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  252. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  253. package/lib/typescript/module/ui/components/ProfileButton.d.ts +1 -1
  254. package/lib/typescript/module/ui/components/ProfileButton.d.ts.map +1 -1
  255. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  256. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts +0 -19
  257. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts.map +1 -1
  258. package/lib/typescript/module/ui/components/authChooser/signInFailureMessage.d.ts +1 -5
  259. package/lib/typescript/module/ui/components/authChooser/signInFailureMessage.d.ts.map +1 -1
  260. package/lib/typescript/module/ui/components/authChooser/styles.d.ts +0 -31
  261. package/lib/typescript/module/ui/components/authChooser/styles.d.ts.map +1 -1
  262. package/lib/typescript/module/ui/components/authChooser/types.d.ts +2 -7
  263. package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
  264. package/lib/typescript/module/ui/components/oauthNavigation.d.ts +1 -1
  265. package/lib/typescript/module/ui/components/signIn/InlineCommonsQr.d.ts +20 -0
  266. package/lib/typescript/module/ui/components/signIn/InlineCommonsQr.d.ts.map +1 -0
  267. package/lib/typescript/module/ui/components/signIn/OxyAccountPicker.d.ts +34 -0
  268. package/lib/typescript/module/ui/components/signIn/OxyAccountPicker.d.ts.map +1 -0
  269. package/lib/typescript/module/ui/components/signIn/OxyAuthScreen.d.ts +43 -0
  270. package/lib/typescript/module/ui/components/signIn/OxyAuthScreen.d.ts.map +1 -0
  271. package/lib/typescript/module/ui/components/signIn/OxyCreateAccountPanel.d.ts +24 -0
  272. package/lib/typescript/module/ui/components/signIn/OxyCreateAccountPanel.d.ts.map +1 -0
  273. package/lib/typescript/module/ui/components/signIn/OxyDeleteAccountPanel.d.ts +16 -0
  274. package/lib/typescript/module/ui/components/signIn/OxyDeleteAccountPanel.d.ts.map +1 -0
  275. package/lib/typescript/module/ui/components/signIn/OxyLinkCommonsPanel.d.ts +21 -0
  276. package/lib/typescript/module/ui/components/signIn/OxyLinkCommonsPanel.d.ts.map +1 -0
  277. package/lib/typescript/module/ui/components/signIn/OxyRecoverAccountPanel.d.ts +20 -0
  278. package/lib/typescript/module/ui/components/signIn/OxyRecoverAccountPanel.d.ts.map +1 -0
  279. package/lib/typescript/module/ui/components/signIn/OxySignInPanel.d.ts +43 -0
  280. package/lib/typescript/module/ui/components/signIn/OxySignInPanel.d.ts.map +1 -0
  281. package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts +17 -0
  282. package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -0
  283. package/lib/typescript/module/ui/components/signIn/accountFlowParts.d.ts +60 -0
  284. package/lib/typescript/module/ui/components/signIn/accountFlowParts.d.ts.map +1 -0
  285. package/lib/typescript/module/ui/components/signIn/artwork.d.ts +8 -0
  286. package/lib/typescript/module/ui/components/signIn/artwork.d.ts.map +1 -0
  287. package/lib/typescript/module/ui/components/signIn/passkeyError.d.ts +16 -0
  288. package/lib/typescript/module/ui/components/signIn/passkeyError.d.ts.map +1 -0
  289. package/lib/typescript/module/ui/components/signIn/signInMethods.d.ts +39 -0
  290. package/lib/typescript/module/ui/components/signIn/signInMethods.d.ts.map +1 -0
  291. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  292. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts +0 -40
  293. package/lib/typescript/module/ui/context/commitSessionFlow.d.ts.map +1 -1
  294. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +15 -10
  295. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  296. package/lib/typescript/module/ui/context/passkeyFlow.d.ts +16 -1
  297. package/lib/typescript/module/ui/context/passkeyFlow.d.ts.map +1 -1
  298. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts +7 -1
  299. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  300. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  301. package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts.map +1 -1
  302. package/lib/typescript/module/ui/oauth/browserAuthTransport.d.ts +9 -0
  303. package/lib/typescript/module/ui/oauth/browserAuthTransport.d.ts.map +1 -1
  304. package/lib/typescript/module/ui/oauth/oauthHandshake.d.ts +3 -0
  305. package/lib/typescript/module/ui/oauth/oauthHandshake.d.ts.map +1 -1
  306. package/lib/typescript/module/ui/oauth/oauthPopup.d.ts +2 -3
  307. package/lib/typescript/module/ui/oauth/oauthPopup.d.ts.map +1 -1
  308. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts +1 -1
  309. package/lib/typescript/module/ui/screens/EditProfileFieldScreen.d.ts.map +1 -1
  310. package/lib/typescript/module/ui/screens/EditProfileScreen.d.ts.map +1 -1
  311. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  312. package/lib/typescript/module/ui/session/authStore.d.ts +0 -30
  313. package/lib/typescript/module/ui/session/authStore.d.ts.map +1 -1
  314. package/lib/typescript/module/ui/types/navigation.d.ts +0 -26
  315. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  316. package/package.json +4 -7
  317. package/src/assets/signIn/slide-1.jpg +0 -0
  318. package/src/assets/signIn/slide-1.jpg.d.ts +3 -0
  319. package/src/assets/signIn/slide-2.jpg +0 -0
  320. package/src/assets/signIn/slide-2.jpg.d.ts +3 -0
  321. package/src/assets/signIn/slide-3.jpg +0 -0
  322. package/src/assets/signIn/slide-3.jpg.d.ts +3 -0
  323. package/src/assets/signIn/slide-4.jpg +0 -0
  324. package/src/assets/signIn/slide-4.jpg.d.ts +3 -0
  325. package/src/index.ts +27 -7
  326. package/src/ui/components/OxyAccountDialogScreen.tsx +11 -72
  327. package/src/ui/components/OxyAuthChooser.tsx +37 -54
  328. package/src/ui/components/OxyProvider.tsx +0 -2
  329. package/src/ui/components/ProfileButton.tsx +1 -4
  330. package/src/ui/components/authChooser/AccountsMenuView.tsx +28 -8
  331. package/src/ui/components/authChooser/primitives.tsx +1 -39
  332. package/src/ui/components/authChooser/signInFailureMessage.ts +1 -7
  333. package/src/ui/components/authChooser/styles.ts +0 -31
  334. package/src/ui/components/authChooser/types.ts +2 -7
  335. package/src/ui/components/oauthNavigation.ts +1 -1
  336. package/src/ui/components/signIn/InlineCommonsQr.tsx +135 -0
  337. package/src/ui/components/signIn/OxyAccountPicker.tsx +129 -0
  338. package/src/ui/components/signIn/OxyAuthScreen.tsx +123 -0
  339. package/src/ui/components/signIn/OxyCreateAccountPanel.tsx +207 -0
  340. package/src/ui/components/signIn/OxyDeleteAccountPanel.tsx +106 -0
  341. package/src/ui/components/signIn/OxyLinkCommonsPanel.tsx +222 -0
  342. package/src/ui/components/signIn/OxyRecoverAccountPanel.tsx +154 -0
  343. package/src/ui/components/signIn/OxySignInPanel.tsx +392 -0
  344. package/src/ui/components/signIn/OxySignUpPanel.tsx +86 -0
  345. package/src/ui/components/signIn/accountFlowParts.tsx +204 -0
  346. package/src/ui/components/signIn/artwork.ts +13 -0
  347. package/src/ui/components/signIn/passkeyError.ts +44 -0
  348. package/src/ui/components/signIn/signInMethods.ts +51 -0
  349. package/src/ui/context/OxyContext.tsx +23 -19
  350. package/src/ui/context/__tests__/commitSessionFlow.test.ts +0 -89
  351. package/src/ui/context/__tests__/passkeyFlow.test.ts +59 -1
  352. package/src/ui/context/commitSessionFlow.ts +0 -61
  353. package/src/ui/context/oxyContextTypes.ts +16 -10
  354. package/src/ui/context/passkeyFlow.ts +28 -0
  355. package/src/ui/hooks/accountDialogSnapshot.ts +20 -1
  356. package/src/ui/hooks/useDeviceSwitcher.ts +3 -11
  357. package/src/ui/oauth/__tests__/browserAuthTransport.test.ts +21 -0
  358. package/src/ui/oauth/browserAuthTransport.ts +14 -4
  359. package/src/ui/oauth/oauthHandshake.ts +4 -1
  360. package/src/ui/oauth/oauthPopup.ts +2 -3
  361. package/src/ui/screens/EditProfileFieldScreen.tsx +1 -27
  362. package/src/ui/screens/EditProfileScreen.tsx +0 -6
  363. package/src/ui/screens/ManageAccountScreen.tsx +4 -5
  364. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +1 -1
  365. package/src/ui/session/authStore.ts +0 -37
  366. package/src/ui/types/navigation.ts +0 -26
  367. package/src/ui/utils/accountDeletionHandoff.ts +3 -3
  368. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js +0 -132
  369. package/lib/commonjs/ui/components/authChooser/SignInEntryView.js.map +0 -1
  370. package/lib/commonjs/ui/components/authChooser/SignUpView.js +0 -77
  371. package/lib/commonjs/ui/components/authChooser/SignUpView.js.map +0 -1
  372. package/lib/commonjs/ui/components/passkeyHubPopup.js +0 -33
  373. package/lib/commonjs/ui/components/passkeyHubPopup.js.map +0 -1
  374. package/lib/commonjs/ui/oauth/legacyRedirectLanes.js +0 -48
  375. package/lib/commonjs/ui/oauth/legacyRedirectLanes.js.map +0 -1
  376. package/lib/module/ui/components/authChooser/SignInEntryView.js +0 -127
  377. package/lib/module/ui/components/authChooser/SignInEntryView.js.map +0 -1
  378. package/lib/module/ui/components/authChooser/SignUpView.js +0 -73
  379. package/lib/module/ui/components/authChooser/SignUpView.js.map +0 -1
  380. package/lib/module/ui/components/passkeyHubPopup.js +0 -29
  381. package/lib/module/ui/components/passkeyHubPopup.js.map +0 -1
  382. package/lib/module/ui/oauth/legacyRedirectLanes.js +0 -44
  383. package/lib/module/ui/oauth/legacyRedirectLanes.js.map +0 -1
  384. package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts +0 -39
  385. package/lib/typescript/commonjs/ui/components/authChooser/SignInEntryView.d.ts.map +0 -1
  386. package/lib/typescript/commonjs/ui/components/authChooser/SignUpView.d.ts +0 -31
  387. package/lib/typescript/commonjs/ui/components/authChooser/SignUpView.d.ts.map +0 -1
  388. package/lib/typescript/commonjs/ui/components/passkeyHubPopup.d.ts +0 -23
  389. package/lib/typescript/commonjs/ui/components/passkeyHubPopup.d.ts.map +0 -1
  390. package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts +0 -40
  391. package/lib/typescript/commonjs/ui/oauth/legacyRedirectLanes.d.ts.map +0 -1
  392. package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts +0 -39
  393. package/lib/typescript/module/ui/components/authChooser/SignInEntryView.d.ts.map +0 -1
  394. package/lib/typescript/module/ui/components/authChooser/SignUpView.d.ts +0 -31
  395. package/lib/typescript/module/ui/components/authChooser/SignUpView.d.ts.map +0 -1
  396. package/lib/typescript/module/ui/components/passkeyHubPopup.d.ts +0 -23
  397. package/lib/typescript/module/ui/components/passkeyHubPopup.d.ts.map +0 -1
  398. package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts +0 -40
  399. package/lib/typescript/module/ui/oauth/legacyRedirectLanes.d.ts.map +0 -1
  400. package/src/ui/components/authChooser/SignInEntryView.tsx +0 -157
  401. package/src/ui/components/authChooser/SignUpView.tsx +0 -76
  402. package/src/ui/components/passkeyHubPopup.ts +0 -28
  403. package/src/ui/oauth/legacyRedirectLanes.ts +0 -43
@@ -14,7 +14,7 @@
14
14
  * remains the native lane and is untouched by this module.
15
15
  */
16
16
 
17
- import { logger, persistOAuthHandshake } from '@oxy.so/core';
17
+ import { logger, persistOAuthHandshake, type OxyAuthScreen } from '@oxy.so/core';
18
18
  import type { OxyServices } from '@oxy.so/core';
19
19
  import { redirectToAuthorize } from '../components/oauthNavigation';
20
20
  import { isWebBrowser } from '../utils/isWebBrowser';
@@ -64,6 +64,14 @@ export interface StartWebOAuthSignInOptions {
64
64
  popup?: OAuthPopupHandle | null;
65
65
  /** Requested scope; defaults to the SDK's standard sign-in scope. */
66
66
  scope?: string;
67
+ /**
68
+ * The transport for this press, whatever the provider's `webAuthMode`. An
69
+ * Oxy app's own account dialog asks for `popup`: auth.oxy.so's window over
70
+ * the app, where the browser's shared session lives.
71
+ */
72
+ transport?: WebAuthMode;
73
+ /** The IdP screen a person with no session there lands on. */
74
+ screen?: OxyAuthScreen;
67
75
  /** Popup timeout override (ms). */
68
76
  timeoutMs?: number;
69
77
  }
@@ -88,10 +96,10 @@ export async function startWebOAuthSignIn(
88
96
  // Claim the window BEFORE the first `await` below, so a caller that invoked us
89
97
  // straight from the click still has gesture attribution. An explicit `null`
90
98
  // means the caller already tried and was blocked.
91
- const popup =
92
- context.mode === 'popup' && options.popup === undefined ? openOAuthPopup() : options.popup ?? null;
99
+ const mode = options.transport ?? context.mode;
100
+ const popup = mode === 'popup' && options.popup === undefined ? openOAuthPopup() : options.popup ?? null;
93
101
 
94
- if (context.mode === 'redirect') {
102
+ if (mode === 'redirect') {
95
103
  closeOAuthPopup(popup);
96
104
  return startRedirectSignIn(context, options, 'redirect-mode');
97
105
  }
@@ -109,6 +117,7 @@ export async function startWebOAuthSignIn(
109
117
  authorizeBaseUrl: context.authorizeBaseUrl,
110
118
  scope: options.scope,
111
119
  responseMode: 'web_message',
120
+ ...(options.screen ? { screen: options.screen } : {}),
112
121
  });
113
122
 
114
123
  if (!navigateOAuthPopup(popup, prepared.authorizeUrl)) {
@@ -178,6 +187,7 @@ async function startRedirectSignIn(
178
187
  redirectUri: options.redirectUri,
179
188
  authorizeBaseUrl: context.authorizeBaseUrl,
180
189
  scope: options.scope,
190
+ ...(options.screen ? { screen: options.screen } : {}),
181
191
  });
182
192
 
183
193
  if (!persistOAuthHandshake(
@@ -9,7 +9,7 @@
9
9
  * identical, which is what lets both lanes converge on one completion path.
10
10
  */
11
11
 
12
- import { buildOAuthAuthorizeUrl, generateOAuthState, generatePkcePair } from '@oxy.so/core';
12
+ import { buildOAuthAuthorizeUrl, generateOAuthState, generatePkcePair, type OxyAuthScreen } from '@oxy.so/core';
13
13
  import type { OAuthHandshake } from './types';
14
14
 
15
15
  /** Inputs for {@link prepareAuthorizeRequest}. */
@@ -28,6 +28,8 @@ export interface PrepareAuthorizeRequestParams {
28
28
  * not a guarantee — an IdP with no opener still redirects.
29
29
  */
30
30
  responseMode?: 'web_message';
31
+ /** The IdP screen a person with no session there lands on. */
32
+ screen?: OxyAuthScreen;
31
33
  }
32
34
 
33
35
  /** A ready-to-use authorize request plus the secrets that finish it. */
@@ -64,6 +66,7 @@ export async function prepareAuthorizeRequest(
64
66
  state,
65
67
  codeChallenge: pkce.codeChallenge,
66
68
  ...(params.responseMode ? { responseMode: params.responseMode } : {}),
69
+ ...(params.screen ? { screen: params.screen } : {}),
67
70
  });
68
71
 
69
72
  return {
@@ -11,10 +11,9 @@
11
11
  * is still being handled. Anything awaited first (resolving the application,
12
12
  * generating PKCE) loses it and the popup is silently blocked. So the window
13
13
  * is opened EMPTY up front and navigated once the authorize URL exists —
14
- * the same shape as `passkeyHubPopup.ts`.
14
+ * a plain function a test can substitute.
15
15
  * - **No close event.** A cross-origin popup fires nothing when the user
16
- * dismisses it; polling `closed` is the only mechanism (as in core's
17
- * `AccountDialogController.watchPopup`).
16
+ * dismisses it; polling `closed` is the only mechanism.
18
17
  * - **No cross-origin reads.** The popup's URL, title, and document are all
19
18
  * opaque. The authorization result arrives ONLY as a `postMessage`.
20
19
  */
@@ -30,7 +30,7 @@ import { SurfaceHeaderAction } from '../components/SurfaceHeaderAction';
30
30
  import { useOxy } from '../context/OxyContext';
31
31
  import { useProfileEditing } from '../hooks/useProfileEditing';
32
32
  import { toast } from '@oxy.so/bloom/toast';
33
- import { EMAIL_REGEX, DISPLAY_NAME_INVALID_MESSAGE, isValidDisplayName } from '@oxy.so/core';
33
+ import { DISPLAY_NAME_INVALID_MESSAGE, isValidDisplayName } from '@oxy.so/core';
34
34
  import { getLinkTitle, getLinkDescription, linksToListItems } from './linkFormat';
35
35
 
36
36
  /**
@@ -39,7 +39,6 @@ import { getLinkTitle, getLinkDescription, linksToListItems } from './linkFormat
39
39
  export type ProfileFieldType =
40
40
  | 'displayName'
41
41
  | 'username'
42
- | 'email'
43
42
  | 'bio'
44
43
  | 'phone'
45
44
  | 'address'
@@ -214,7 +213,6 @@ function buildInitialProfileState(
214
213
  fieldValues.address = String(userData.address || '');
215
214
  break;
216
215
  case 'username':
217
- case 'email':
218
216
  case 'bio':
219
217
  case 'phone':
220
218
  fieldValues[fieldType] = String(userData[fieldType] || '');
@@ -318,30 +316,6 @@ const EditProfileFieldScreen: React.FC<EditProfileFieldScreenProps> = ({
318
316
  },
319
317
  ],
320
318
  };
321
- case 'email':
322
- return {
323
- title: t('editProfile.items.email.title') || 'Email',
324
- subtitle: t('editProfile.items.email.subtitle') || 'Your primary email address',
325
- fields: [
326
- {
327
- key: 'email',
328
- label: t('editProfile.items.email.label') || 'Email Address',
329
- placeholder: t('editProfile.items.email.placeholder') || 'Enter your email address',
330
- type: 'email',
331
- validation: (value) => {
332
- if (!EMAIL_REGEX.test(value)) {
333
- return t('editProfile.items.email.invalid') || 'Please enter a valid email address';
334
- }
335
- return undefined;
336
- },
337
- inputProps: {
338
- keyboardType: 'email-address',
339
- autoCapitalize: 'none',
340
- autoCorrect: false,
341
- },
342
- },
343
- ],
344
- };
345
319
  case 'bio':
346
320
  return {
347
321
  title: t('editProfile.items.bio.title') || 'Bio',
@@ -89,12 +89,6 @@ const EditProfileScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
89
89
  description={user?.username ? `@${user.username}` : notSet}
90
90
  onPress={() => goToField('username')}
91
91
  />
92
- <SettingsListItem
93
- icon={<SettingsIcon name="email" color={bloomTheme.colors.success} />}
94
- title={t('editProfile.items.email.title') || 'Email'}
95
- description={user?.email || notSet}
96
- onPress={() => goToField('email')}
97
- />
98
92
  <SettingsListItem
99
93
  icon={<SettingsIcon name="phone" color={bloomTheme.colors.warning} />}
100
94
  title={t('editProfile.items.phone.title') || 'Phone Number'}
@@ -14,7 +14,7 @@ import { useTheme } from '@oxy.so/bloom/theme';
14
14
  import { Text } from '@oxy.so/bloom/typography';
15
15
  import { SettingsListGroup, SettingsListItem } from '@oxy.so/bloom/settings-list';
16
16
  import {
17
- IDENTITY_WEB_ORIGIN,
17
+ AUTH_WEB_ORIGIN,
18
18
  getAccountDisplayName,
19
19
  getAccountFallbackHandle,
20
20
  getNormalizedUserHandle,
@@ -323,11 +323,10 @@ const ManageAccountScreen: React.FC<BaseScreenProps> = ({
323
323
  );
324
324
  return;
325
325
  }
326
- // Web: deleting an account is signed with its identity key, which only
327
- // the identity origin can unseal — the deletion happens there, never on
328
- // this page.
326
+ // Web: a passkey account confirms its deletion with its passkey, which
327
+ // only auth.oxy.so asserts — the deletion happens there, never on this page.
329
328
  if (isWebBrowser()) {
330
- await Linking.openURL(`${IDENTITY_WEB_ORIGIN}/`).catch(() => {
329
+ await Linking.openURL(`${AUTH_WEB_ORIGIN}/delete-account`).catch(() => {
331
330
  toast.error(t('accountSwitcher.linkOpenFailed'));
332
331
  });
333
332
  return;
@@ -115,7 +115,7 @@ const TrustLeaderboardScreen: React.FC<BaseScreenProps> = ({ navigate }) => {
115
115
  </TouchableOpacity>
116
116
  );
117
117
  },
118
- [oxyServices, currentUserId, handleEntryPress, locale],
118
+ [oxyServices, currentUserId, handleEntryPress, locale, t],
119
119
  );
120
120
 
121
121
  const keyExtractor = useCallback(
@@ -7,7 +7,6 @@
7
7
  * store shape + logic (`createWebAuthStateStore` / `createNativeAuthStateStore` /
8
8
  * `createMemoryAuthStateStore`); this module only selects the seam:
9
9
  *
10
- * - `storage: 'ephemeral'` → `createMemoryAuthStateStore()`, on EVERY platform.
11
10
  * - web → `createWebAuthStateStore()` (localStorage, in-memory fallback).
12
11
  * - native → `createNativeAuthStateStore(secureKV)` for the SESSION blob over
13
12
  * the shared `createNativeSecureKeyValueStorage()` adapter
@@ -23,7 +22,6 @@
23
22
  import {
24
23
  createWebAuthStateStore,
25
24
  createNativeAuthStateStore,
26
- createMemoryAuthStateStore,
27
25
  createSharedMirroringAuthStateStore,
28
26
  type AuthStateStore,
29
27
  type SessionMode,
@@ -46,20 +44,6 @@ export interface PlatformAuthStateStoreOptions {
46
44
  * a decision a storage seam gets to make.
47
45
  */
48
46
  sessionMode?: SessionMode;
49
- /**
50
- * Whether this origin/app may persist a durable device credential AT ALL.
51
- *
52
- * `'ephemeral'` stores nothing durable and mirrors nothing: the session lives
53
- * in memory for the lifetime of the page and is gone on reload. Its one caller
54
- * is `auth.oxy.so` with the browser hub enabled (issue #937 Phase 5, ADR 0003),
55
- * where the durable credential for the browser profile is the server-side
56
- * DeviceSession behind the `__Host-oxy-device` handle.
57
- *
58
- * See `OxyProviderProps.deviceCredentialStorage` for why the answer to "let the
59
- * hub be authoritative" is to stop persisting the other credential rather than
60
- * to consult it second.
61
- */
62
- storage?: 'persistent' | 'ephemeral';
63
47
  }
64
48
 
65
49
  /**
@@ -68,31 +52,10 @@ export interface PlatformAuthStateStoreOptions {
68
52
  * Native persists the SESSION blob (`deviceId` + `deviceSecret` + cached access
69
53
  * token) per-app in SecureStore; the SDK re-mints the access token from the
70
54
  * device credential on the next cold boot.
71
- *
72
- * ## The ephemeral check is FIRST, and the order is load-bearing
73
- *
74
- * It short-circuits above the `isReactNative()` branch so an ephemeral caller can
75
- * never reach the native path — and therefore can never reach the shared-slot
76
- * mirroring wrapper. Checked after that branch instead, an origin that has
77
- * declined to persist a credential would publish one into the device-wide slot
78
- * every sibling app adopts on cold boot: it would keep nothing itself while
79
- * deciding which session five other apps boot into.
80
- *
81
- * That is unreachable today because the only ephemeral caller is a web origin, so
82
- * `isReactNative()` is false there anyway. Unreachable today is exactly the kind
83
- * of guarantee that stops holding when someone adds the second caller, so it is
84
- * structural here rather than incidental, and
85
- * `__tests__/session/authStoreEphemeral.test.ts` holds the ordering directly.
86
55
  */
87
56
  export function createPlatformAuthStateStore(
88
57
  options: PlatformAuthStateStoreOptions = {},
89
58
  ): AuthStateStore {
90
- // FIRST, above every platform branch — see the docblock for why the ordering
91
- // is the guarantee and not a coincidence.
92
- if (options.storage === 'ephemeral') {
93
- return createMemoryAuthStateStore();
94
- }
95
-
96
59
  if (!isReactNative()) {
97
60
  return createWebAuthStateStore();
98
61
  }
@@ -146,32 +146,6 @@ export interface OxyProviderProps {
146
146
  * @default false
147
147
  */
148
148
  backgroundSession?: boolean;
149
- /**
150
- * Whether this origin/app may persist the durable device credential
151
- * (`deviceId` + `deviceSecret`) at all.
152
- *
153
- * `'persistent'` (the default, and every app's behaviour) stores it — web
154
- * localStorage per origin, SecureStore per app on native — so the SDK can
155
- * re-mint an access token on the next cold boot.
156
- *
157
- * `'ephemeral'` stores NOTHING durable: the session lives in memory for the
158
- * lifetime of the page and is gone on reload. It exists for ONE caller,
159
- * `auth.oxy.so` with the browser hub enabled (issue #937 Phase 5, ADR 0003),
160
- * where the durable credential for the browser profile is the server-side
161
- * DeviceSession behind the `__Host-oxy-device` handle. Two durable
162
- * credentials for one origin is the dual authority that phase exists to
163
- * remove — revoking the hub while a localStorage secret still mints would
164
- * make a sign-out look like it worked — so the way to let the hub be
165
- * authoritative is to stop persisting the other one, not to consult it
166
- * second.
167
- *
168
- * Do NOT reach for this to make an app "more private". A relying-party
169
- * origin set to `'ephemeral'` simply signs the user out on every reload,
170
- * because nothing else on that origin remembers the device.
171
- *
172
- * @default 'persistent'
173
- */
174
- deviceCredentialStorage?: 'persistent' | 'ephemeral';
175
149
  /**
176
150
  * Wires the app's OWN i18n library to Oxy's resolved language, so the
177
151
  * account (or, signed out, the device/guest locale) drives the app's
@@ -1,6 +1,6 @@
1
1
  import { surfaces } from '@oxy.so/bloom/surfaces';
2
2
  import { toast } from '@oxy.so/bloom/toast';
3
- import { IDENTITY_WEB_ORIGIN, logger } from '@oxy.so/core';
3
+ import { AUTH_WEB_ORIGIN, logger } from '@oxy.so/core';
4
4
 
5
5
  /**
6
6
  * Commons' own delete-account screen (`app/(tabs)/(settings)/delete-account.tsx`
@@ -100,12 +100,12 @@ export async function runAccountDeletionHandoff(
100
100
  return 'handled';
101
101
  }
102
102
 
103
- const site = IDENTITY_WEB_ORIGIN.replace(/^https?:\/\//, '');
103
+ const site = `${AUTH_WEB_ORIGIN.replace(/^https?:\/\//, '')}/delete-account`;
104
104
  await surfaces.confirm({
105
105
  title: text('deleteAccount.handoff.elsewhereTitle', 'Delete your account where your identity is'),
106
106
  description: text(
107
107
  'deleteAccount.handoff.elsewhereMessage',
108
- `Deleting your account needs your identity key, and it isn't on this device. Open Oxy Commons on the device that holds your identity and go to Settings > Delete account, or open ${site} in a browser that holds it.`,
108
+ `Deleting your account needs your identity key, and it isn't on this device. Open Oxy Commons on the device that holds it and go to Settings > Delete account. An account that uses a passkey is deleted at ${site}.`,
109
109
  { site },
110
110
  ),
111
111
  confirmLabel: text('deleteAccount.handoff.gotIt', 'Got it'),
@@ -1,132 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _reactNative = require("react-native");
8
- var _button = require("@oxy.so/bloom/button");
9
- var _typography = require("@oxy.so/bloom/typography");
10
- var _core = require("@oxy.so/core");
11
- var _TroubleDisclosure = _interopRequireDefault(require("./TroubleDisclosure.js"));
12
- var _primitives = require("./primitives.js");
13
- var _styles = require("./styles.js");
14
- var _jsxRuntime = require("react/jsx-runtime");
15
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
- /**
17
- * The sign-in ENTRY (`signin` / `add` views) — ONE primary action.
18
- *
19
- * Web: "Continue" opens the identity origin (`id.oxy.so`) in a popup, where the
20
- * person signs in — or creates an account — with a passkey, and the account's
21
- * self-custody identity is created or unsealed (one identity, two carriers). No
22
- * philosophy up front: fingerprint, face or device PIN, and they are in. An
23
- * account that lives on another device is one subordinate link away (Commons
24
- * QR). Nothing auto-starts: a browser only opens a popup from a user gesture.
25
- *
26
- * Native: "Continue with Oxy" — the Commons flow (shared keychain, else the
27
- * request Oxy routes to the person's Commons identity).
28
- *
29
- * Existing accounts still render ABOVE the CTA: "continue as one of these" is a
30
- * choice of WHO, not of HOW.
31
- *
32
- * Signed in (the "Add another account" entry), a row is an account to switch
33
- * to, and the current one carries its check. Signed out, nothing here is
34
- * current: the device may still list an identity it holds (Commons' shared
35
- * one), but THIS app has no session, so each row reads "Continue as @handle"
36
- * and choosing it signs in (OxyHQ/oxy#1375 items 20 and 21).
37
- */
38
-
39
- const SignInEntryView = ({
40
- snapshot,
41
- principals,
42
- theme,
43
- t,
44
- handlers,
45
- onContinueWithOxy,
46
- alternatives
47
- }) => {
48
- const web = alternatives.passkeyAvailable;
49
-
50
- // Web keeps Commons one link away; native keeps its QR/Commons alternatives
51
- // behind the disclosure, as before.
52
- const troubleActions = web ? [{
53
- key: 'get-commons-link',
54
- label: t('accountSwitcher.getCommons'),
55
- onPress: alternatives.onGetCommons
56
- }] : [{
57
- key: 'scan-qr-link',
58
- label: t('accountSwitcher.scanQr'),
59
- onPress: alternatives.onShowQr
60
- }, {
61
- key: 'get-commons-link',
62
- label: t('accountSwitcher.getCommons'),
63
- onPress: alternatives.onGetCommons
64
- }];
65
-
66
- // Whose route this is only needs naming when the list holds more than one
67
- // person, or somebody with more than one account — the same rule the account
68
- // menu's group headers follow.
69
- const namesTheOperator = (0, _core.showsPrincipalHeaders)(principals);
70
- const rows = principals.flatMap(principal => principal.contexts.map(context => ({
71
- context,
72
- operatedBy: namesTheOperator && context.isDelegated ? t('accountSwitcher.context.operatedBy', {
73
- name: principal.displayName
74
- }) : null
75
- })));
76
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
77
- style: _styles.authChooserStyles.signInBlock,
78
- children: [rows.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
79
- style: _styles.authChooserStyles.rows,
80
- children: [rows.map(({
81
- context,
82
- operatedBy
83
- }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.AccountRow, {
84
- context: context,
85
- operatedBy: operatedBy,
86
- continueAsLabel: snapshot.hasSession ? null : t('signin.chooser.continueAs', {
87
- name: context.handle ? `@${context.handle}` : context.displayName
88
- }),
89
- theme: theme,
90
- activating: snapshot.activatingContextId === context.contextId,
91
- disabled: snapshot.activatingContextId !== null,
92
- onPress: () => handlers.onActivate(context.contextId)
93
- }, context.contextId)), /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.Dividerish, {
94
- theme: theme,
95
- label: t('signin.or')
96
- })]
97
- }) : null, web ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
98
- style: [_styles.authChooserStyles.mutedText, {
99
- color: theme.colors.textSecondary
100
- }],
101
- children: t('accountSwitcher.passkeyHint')
102
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
103
- appearance: "solid",
104
- tone: "accent"
105
- // `lg` (44dp): the surface's ONE primary action is a full-width CTA, and
106
- // the default `md` (36dp) is under the touch-target minimum on Android.
107
- ,
108
- size: "lg",
109
- onPress: web ? alternatives.onSignInWithPasskey : onContinueWithOxy,
110
- style: _styles.authChooserStyles.primaryButton,
111
- testID: "continue-with-oxy",
112
- children: web ? t('accountSwitcher.continueWithPasskey') : t('accountSwitcher.continueWithOxy')
113
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.SubtleLink, {
114
- label: t('signin.createAccountLink'),
115
- theme: theme,
116
- onPress: alternatives.onCreateAccount,
117
- testID: "create-account-link"
118
- }), web ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.SubtleLink, {
119
- label: t('accountSwitcher.otherDeviceCommons'),
120
- theme: theme,
121
- onPress: alternatives.onShowQr,
122
- testID: "scan-qr-link"
123
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_TroubleDisclosure.default, {
124
- actions: troubleActions,
125
- revealed: false,
126
- theme: theme,
127
- t: t
128
- })]
129
- });
130
- };
131
- var _default = exports.default = SignInEntryView;
132
- //# sourceMappingURL=SignInEntryView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_reactNative","require","_button","_typography","_core","_TroubleDisclosure","_interopRequireDefault","_primitives","_styles","_jsxRuntime","e","__esModule","default","SignInEntryView","snapshot","principals","theme","t","handlers","onContinueWithOxy","alternatives","web","passkeyAvailable","troubleActions","key","label","onPress","onGetCommons","onShowQr","namesTheOperator","showsPrincipalHeaders","rows","flatMap","principal","contexts","map","context","operatedBy","isDelegated","name","displayName","jsxs","View","style","styles","signInBlock","children","length","jsx","AccountRow","continueAsLabel","hasSession","handle","activating","activatingContextId","contextId","disabled","onActivate","Dividerish","Text","mutedText","color","colors","textSecondary","Button","appearance","tone","size","onSignInWithPasskey","primaryButton","testID","SubtleLink","onCreateAccount","actions","revealed","_default","exports"],"sourceRoot":"../../../../../src","sources":["ui/components/authChooser/SignInEntryView.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,77 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _reactNative = require("react-native");
8
- var _button = require("@oxy.so/bloom/button");
9
- var _typography = require("@oxy.so/bloom/typography");
10
- var _primitives = require("./primitives.js");
11
- var _styles = require("./styles.js");
12
- var _jsxRuntime = require("react/jsx-runtime");
13
- /**
14
- * Account creation (`signup` view).
15
- *
16
- * Web: the account AND its self-custody identity are created at the identity
17
- * origin (`id.oxy.so`), in the same window a passkey sign-in uses — never on
18
- * this page, whatever its origin (one identity, two carriers). The sign-in
19
- * entry's "create an account" link opens that window directly; this view is
20
- * what `openAccountDialog('signup')` lands on, and offers the same one action.
21
- *
22
- * Native: Commons owns identity creation. Deep-link straight in when Commons is
23
- * installed, else lead with the "Get Commons" acquisition CTA.
24
- */
25
-
26
- const SignUpView = ({
27
- snapshot,
28
- theme,
29
- t,
30
- passkeyMode,
31
- onOpenHub,
32
- onCreateIdentityInCommons,
33
- onGetCommons,
34
- onBackToSignIn
35
- }) => {
36
- if (passkeyMode === 'none') {
37
- const commonsInstalled = snapshot.commonsAvailability === 'available';
38
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
39
- style: _styles.authChooserStyles.centeredBlock,
40
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
41
- appearance: "solid",
42
- tone: "accent",
43
- size: "lg",
44
- onPress: commonsInstalled ? onCreateIdentityInCommons : onGetCommons,
45
- style: _styles.authChooserStyles.primaryButton,
46
- children: commonsInstalled ? t('signup.createInCommons') : t('accountSwitcher.getCommons')
47
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.SubtleLink, {
48
- label: t('signup.backToSignInLink'),
49
- theme: theme,
50
- onPress: onBackToSignIn
51
- })]
52
- });
53
- }
54
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
55
- style: _styles.authChooserStyles.centeredBlock,
56
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_typography.Text, {
57
- style: [_styles.authChooserStyles.mutedText, {
58
- color: theme.colors.textSecondary
59
- }],
60
- children: t('accountSwitcher.passkeyHint')
61
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.Button, {
62
- appearance: "solid",
63
- tone: "accent",
64
- size: "lg",
65
- onPress: onOpenHub,
66
- style: _styles.authChooserStyles.primaryButton,
67
- testID: "signup-open-identity",
68
- children: t('signup.createAccount')
69
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_primitives.SubtleLink, {
70
- label: t('signup.backToSignInLink'),
71
- theme: theme,
72
- onPress: onBackToSignIn
73
- })]
74
- });
75
- };
76
- var _default = exports.default = SignUpView;
77
- //# sourceMappingURL=SignUpView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_reactNative","require","_button","_typography","_primitives","_styles","_jsxRuntime","SignUpView","snapshot","theme","t","passkeyMode","onOpenHub","onCreateIdentityInCommons","onGetCommons","onBackToSignIn","commonsInstalled","commonsAvailability","jsxs","View","style","styles","centeredBlock","children","jsx","Button","appearance","tone","size","onPress","primaryButton","SubtleLink","label","Text","mutedText","color","colors","textSecondary","testID","_default","exports","default"],"sourceRoot":"../../../../../src","sources":["ui/components/authChooser/SignUpView.tsx"],"mappings":";;;;;;AAcA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEA,IAAAG,WAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAAuD,IAAAK,WAAA,GAAAL,OAAA;AAnBvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAyBA,MAAMM,UAAqC,GAAGA,CAAC;EAC7CC,QAAQ;EACRC,KAAK;EACLC,CAAC;EACDC,WAAW;EACXC,SAAS;EACTC,yBAAyB;EACzBC,YAAY;EACZC;AACF,CAAC,KAAK;EACJ,IAAIJ,WAAW,KAAK,MAAM,EAAE;IAC1B,MAAMK,gBAAgB,GAAGR,QAAQ,CAACS,mBAAmB,KAAK,WAAW;IACrE,oBACE,IAAAX,WAAA,CAAAY,IAAA,EAAClB,YAAA,CAAAmB,IAAI;MAACC,KAAK,EAAEC,yBAAM,CAACC,aAAc;MAAAC,QAAA,gBAChC,IAAAjB,WAAA,CAAAkB,GAAA,EAACtB,OAAA,CAAAuB,MAAM;QACLC,UAAU,EAAC,OAAO;QAACC,IAAI,EAAC,QAAQ;QAACC,IAAI,EAAC,IAAI;QAC1CC,OAAO,EAAEb,gBAAgB,GAAGH,yBAAyB,GAAGC,YAAa;QACrEM,KAAK,EAAEC,yBAAM,CAACS,aAAc;QAAAP,QAAA,EAE3BP,gBAAgB,GAAGN,CAAC,CAAC,wBAAwB,CAAC,GAAGA,CAAC,CAAC,4BAA4B;MAAC,CAC3E,CAAC,eACT,IAAAJ,WAAA,CAAAkB,GAAA,EAACpB,WAAA,CAAA2B,UAAU;QAACC,KAAK,EAAEtB,CAAC,CAAC,yBAAyB,CAAE;QAACD,KAAK,EAAEA,KAAM;QAACoB,OAAO,EAAEd;MAAe,CAAE,CAAC;IAAA,CACtF,CAAC;EAEX;EAEA,oBACE,IAAAT,WAAA,CAAAY,IAAA,EAAClB,YAAA,CAAAmB,IAAI;IAACC,KAAK,EAAEC,yBAAM,CAACC,aAAc;IAAAC,QAAA,gBAChC,IAAAjB,WAAA,CAAAkB,GAAA,EAACrB,WAAA,CAAA8B,IAAI;MAACb,KAAK,EAAE,CAACC,yBAAM,CAACa,SAAS,EAAE;QAAEC,KAAK,EAAE1B,KAAK,CAAC2B,MAAM,CAACC;MAAc,CAAC,CAAE;MAAAd,QAAA,EACpEb,CAAC,CAAC,6BAA6B;IAAC,CAC7B,CAAC,eACP,IAAAJ,WAAA,CAAAkB,GAAA,EAACtB,OAAA,CAAAuB,MAAM;MAACC,UAAU,EAAC,OAAO;MAACC,IAAI,EAAC,QAAQ;MAACC,IAAI,EAAC,IAAI;MAACC,OAAO,EAAEjB,SAAU;MAACQ,KAAK,EAAEC,yBAAM,CAACS,aAAc;MAACQ,MAAM,EAAC,sBAAsB;MAAAf,QAAA,EAC9Hb,CAAC,CAAC,sBAAsB;IAAC,CACpB,CAAC,eACT,IAAAJ,WAAA,CAAAkB,GAAA,EAACpB,WAAA,CAAA2B,UAAU;MAACC,KAAK,EAAEtB,CAAC,CAAC,yBAAyB,CAAE;MAACD,KAAK,EAAEA,KAAM;MAACoB,OAAO,EAAEd;IAAe,CAAE,CAAC;EAAA,CACtF,CAAC;AAEX,CAAC;AAAC,IAAAwB,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEalC,UAAU","ignoreList":[]}
@@ -1,33 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.openPasskeyHubPopup = openPasskeyHubPopup;
7
- /**
8
- * Popup opener for the cross-origin passkey hub (b2).
9
- *
10
- * On a non-Oxy web origin (e.g. mention.earth) a WebAuthn ceremony can't run
11
- * locally — the credential's RP ID is bound to `oxy.so`. Instead,
12
- * `AccountDialogController.startPasskeyHubSignIn` opens a popup at the
13
- * auth.oxy.so passkey hub, where the SAME ceremony IS a first-party operation.
14
- *
15
- * Kept in its own module (mirroring `oauthNavigation.ts`'s
16
- * `redirectToAuthorize`) so `window.open` sits behind a plain function the
17
- * controller wiring in `OxyContext` can inject without touching `window`
18
- * itself, and so a test can substitute a fake opener.
19
- */
20
-
21
- /**
22
- * Open a new, EMPTY popup window. Must be called SYNCHRONOUSLY from within a
23
- * user-gesture handler (before any `await`) — opening it after an async call
24
- * loses the gesture attribution and the browser silently blocks it. Returns
25
- * `null` when blocked, or when there is no DOM `window` (native/SSR — the
26
- * hub-popup flow does not apply there).
27
- */
28
- function openPasskeyHubPopup() {
29
- const win = globalThis.window;
30
- if (!win) return null;
31
- return win.open('', '_blank', 'width=420,height=640');
32
- }
33
- //# sourceMappingURL=passkeyHubPopup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["openPasskeyHubPopup","win","globalThis","window","open"],"sourceRoot":"../../../../src","sources":["ui/components/passkeyHubPopup.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,mBAAmBA,CAAA,EAA6B;EAC5D,MAAMC,GAAG,GAAIC,UAAU,CAAyBC,MAAM;EACtD,IAAI,CAACF,GAAG,EAAE,OAAO,IAAI;EACrB,OAAOA,GAAG,CAACG,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,sBAAsB,CAAC;AACzD","ignoreList":[]}
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.allowsAutomaticIdpRedirect = allowsAutomaticIdpRedirect;
7
- /**
8
- * The legacy, redirect-mode-only lanes that navigate the RP's TOP-LEVEL window
9
- * to the IdP without a user gesture.
10
- *
11
- * `webAuthMode: 'popup'` exists to guarantee exactly one thing: the relying
12
- * party never leaves its route. Two mechanics in this SDK break that guarantee,
13
- * because each replaces the whole document on its own initiative:
14
- *
15
- * 1. **Cold-boot silent restore** — a full-page `prompt=none` authorize bounce
16
- * to `auth.oxy.so` when the device-secret mint finds no local session
17
- * (`maybeStartSilentOAuthRestore`, called from `runProviderColdBoot`).
18
- * 2. **Post-sign-in hub sync** — a full-page hop to `auth.oxy.so/sync` that
19
- * plants this device's credential on the IdP hub so OTHER origins can later
20
- * run lane 1 (`syncHubAfterSignIn`, called from the `commitSession` funnel).
21
- *
22
- * Both belong to the redirect transport and are kept only for the migration
23
- * window (issue #691, "Cold boot and cross-domain behavior"). In popup mode a
24
- * domain with no local credential simply resolves SIGNED OUT, and the user's
25
- * next explicit "Continue with Oxy" opens the popup — from a real user gesture,
26
- * never automatically.
27
- *
28
- * NOT covered here, and correctly enabled in BOTH modes: navigations the user
29
- * asked for. When the browser blocks the popup, `startWebOAuthSignIn` still
30
- * falls back to a full-page redirect rather than dead-ending the sign-in, and
31
- * `tryCompleteOAuthReturn` still consumes a `?code=` that is already on the URL.
32
- *
33
- * PHASE 7b: once the pilot flips the default transport to `'popup'`, this
34
- * predicate and BOTH lanes above are deleted outright. Grepping this symbol
35
- * finds every site that has to go.
36
- */
37
-
38
- /**
39
- * Whether a provider running `webAuthMode` may perform an SDK-initiated,
40
- * non-gesture, full-page navigation to the IdP.
41
- *
42
- * `true` only for `'redirect'` — still the default and the compatibility path,
43
- * whose behaviour must stay byte-for-byte unchanged.
44
- */
45
- function allowsAutomaticIdpRedirect(webAuthMode) {
46
- return webAuthMode === 'redirect';
47
- }
48
- //# sourceMappingURL=legacyRedirectLanes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["allowsAutomaticIdpRedirect","webAuthMode"],"sourceRoot":"../../../../src","sources":["ui/oauth/legacyRedirectLanes.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,0BAA0BA,CAACC,WAAwB,EAAW;EAC5E,OAAOA,WAAW,KAAK,UAAU;AACnC","ignoreList":[]}