@oxy.so/services 6.2.0 → 8.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 (922) hide show
  1. package/README.md +80 -136
  2. package/lib/commonjs/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  3. package/lib/commonjs/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  4. package/lib/commonjs/assets/assets/fonts/icons/manifest.json +5 -21
  5. package/lib/commonjs/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  6. package/lib/commonjs/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  7. package/lib/commonjs/assets/fonts/icons/manifest.json +5 -21
  8. package/lib/commonjs/index.js +21 -15
  9. package/lib/commonjs/index.js.map +1 -1
  10. package/lib/commonjs/ui/boot/runProviderColdBoot.js +2 -1
  11. package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
  12. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +2 -3
  13. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
  14. package/lib/commonjs/ui/components/OxyAuthChooser.js +15 -32
  15. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  16. package/lib/commonjs/ui/components/OxySignInButton.js +1 -1
  17. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  18. package/lib/commonjs/ui/components/OxySignInRequestSurface.js.map +1 -1
  19. package/lib/commonjs/ui/components/ProfileButton.js +1 -1
  20. package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
  21. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +2 -2
  22. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  23. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js +6 -17
  24. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js.map +1 -1
  25. package/lib/commonjs/ui/components/authChooser/TroubleDisclosure.js +1 -1
  26. package/lib/commonjs/ui/components/authChooser/primitives.js +1 -102
  27. package/lib/commonjs/ui/components/authChooser/primitives.js.map +1 -1
  28. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js.map +1 -1
  29. package/lib/commonjs/ui/components/authChooser/signInProgress.js.map +1 -1
  30. package/lib/commonjs/ui/components/authChooser/styles.js +0 -33
  31. package/lib/commonjs/ui/components/authChooser/styles.js.map +1 -1
  32. package/lib/commonjs/ui/components/authChooser/types.js +0 -8
  33. package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
  34. package/lib/commonjs/ui/components/signIn/InlineCommonsQr.js +1 -1
  35. package/lib/commonjs/ui/components/signIn/OxyAccountPicker.js +153 -58
  36. package/lib/commonjs/ui/components/signIn/OxyAccountPicker.js.map +1 -1
  37. package/lib/commonjs/ui/components/signIn/OxyAuthenticatorPanel.js +325 -0
  38. package/lib/commonjs/ui/components/signIn/OxyAuthenticatorPanel.js.map +1 -0
  39. package/lib/commonjs/ui/components/signIn/OxyDeleteAccountPanel.js +52 -56
  40. package/lib/commonjs/ui/components/signIn/OxyDeleteAccountPanel.js.map +1 -1
  41. package/lib/commonjs/ui/components/signIn/OxyLinkCommonsPanel.js +48 -38
  42. package/lib/commonjs/ui/components/signIn/OxyLinkCommonsPanel.js.map +1 -1
  43. package/lib/commonjs/ui/components/signIn/OxyPasswordPanel.js +141 -0
  44. package/lib/commonjs/ui/components/signIn/OxyPasswordPanel.js.map +1 -0
  45. package/lib/commonjs/ui/components/signIn/OxySignInPanel.js +496 -201
  46. package/lib/commonjs/ui/components/signIn/OxySignInPanel.js.map +1 -1
  47. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js +211 -42
  48. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js.map +1 -1
  49. package/lib/commonjs/ui/components/signIn/ReauthStep.js +186 -0
  50. package/lib/commonjs/ui/components/signIn/ReauthStep.js.map +1 -0
  51. package/lib/commonjs/ui/components/signIn/accountFlowParts.js +103 -26
  52. package/lib/commonjs/ui/components/signIn/accountFlowParts.js.map +1 -1
  53. package/lib/commonjs/ui/components/signIn/signInFlowStore.js +50 -0
  54. package/lib/commonjs/ui/components/signIn/signInFlowStore.js.map +1 -0
  55. package/lib/commonjs/ui/components/signIn/signInMethods.js +11 -25
  56. package/lib/commonjs/ui/components/signIn/signInMethods.js.map +1 -1
  57. package/lib/commonjs/ui/context/OxyContext.js +125 -119
  58. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  59. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +11 -10
  60. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  61. package/lib/commonjs/ui/context/useOxyAccountGraph.js +4 -4
  62. package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
  63. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +1 -1
  64. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +19 -9
  65. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  66. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +4 -4
  67. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  68. package/lib/commonjs/ui/hooks/queries/queryKeys.js +23 -3
  69. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  70. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +8 -8
  71. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  72. package/lib/commonjs/ui/hooks/queries/useAuthMethods.js +27 -15
  73. package/lib/commonjs/ui/hooks/queries/useAuthMethods.js.map +1 -1
  74. package/lib/commonjs/ui/hooks/queries/useFileQueries.js +5 -2
  75. package/lib/commonjs/ui/hooks/queries/useFileQueries.js.map +1 -1
  76. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +8 -8
  77. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  78. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +4 -3
  79. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  80. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +6 -6
  81. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  82. package/lib/commonjs/ui/hooks/useAssets.js +36 -20
  83. package/lib/commonjs/ui/hooks/useAssets.js.map +1 -1
  84. package/lib/commonjs/ui/hooks/useAvatarPicker.js +6 -4
  85. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
  86. package/lib/commonjs/ui/hooks/useDeviceManagement.js +5 -5
  87. package/lib/commonjs/ui/hooks/useDeviceManagement.js.map +1 -1
  88. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js +2 -2
  89. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js.map +1 -1
  90. package/lib/commonjs/ui/hooks/useFileDownloadUrl.js +1 -4
  91. package/lib/commonjs/ui/hooks/useFileDownloadUrl.js.map +1 -1
  92. package/lib/commonjs/ui/hooks/useFollow.js +2 -2
  93. package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
  94. package/lib/commonjs/ui/hooks/useFollowTarget.js +5 -5
  95. package/lib/commonjs/ui/hooks/useFollowTarget.js.map +1 -1
  96. package/lib/commonjs/ui/hooks/useI18n.js +4 -1
  97. package/lib/commonjs/ui/hooks/useI18n.js.map +1 -1
  98. package/lib/commonjs/ui/hooks/useResolvedFileUrls.js +2 -2
  99. package/lib/commonjs/ui/hooks/useResolvedFileUrls.js.map +1 -1
  100. package/lib/commonjs/ui/hooks/useSessionManagement.js +3 -3
  101. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  102. package/lib/commonjs/ui/icons/subsetGlyphMaps.js +0 -16
  103. package/lib/commonjs/ui/icons/subsetGlyphMaps.js.map +1 -1
  104. package/lib/commonjs/ui/navigation/routes.js +6 -4
  105. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  106. package/lib/commonjs/ui/navigation/surfaceRegistry.js +1 -1
  107. package/lib/commonjs/ui/navigation/surfaceRegistry.js.map +1 -1
  108. package/lib/commonjs/ui/oauth/browserBridge.js +247 -0
  109. package/lib/commonjs/ui/oauth/browserBridge.js.map +1 -0
  110. package/lib/commonjs/ui/oauth/completeOAuthCode.js +1 -1
  111. package/lib/commonjs/ui/oauth/completeOAuthCode.js.map +1 -1
  112. package/lib/commonjs/ui/oauth/explicitOAuthConsent.js +1 -1
  113. package/lib/commonjs/ui/oauth/explicitOAuthConsent.js.map +1 -1
  114. package/lib/commonjs/ui/runtime/createOxyRuntime.js +9 -8
  115. package/lib/commonjs/ui/runtime/createOxyRuntime.js.map +1 -1
  116. package/lib/commonjs/ui/runtime/runtimeContext.js.map +1 -1
  117. package/lib/commonjs/ui/screens/AccountMembersScreen.js +7 -7
  118. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  119. package/lib/commonjs/ui/screens/AccountSecurityPanelScreen.js +35 -0
  120. package/lib/commonjs/ui/screens/AccountSecurityPanelScreen.js.map +1 -0
  121. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +3 -3
  122. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  123. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +1 -1
  124. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  125. package/lib/commonjs/ui/screens/AppInfoScreen.js +5 -5
  126. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  127. package/lib/commonjs/ui/screens/AvatarCropScreen.js +3 -3
  128. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  129. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js +1 -1
  130. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js.map +1 -1
  131. package/lib/commonjs/ui/screens/CreateAccountScreen.js +1 -1
  132. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
  133. package/lib/commonjs/ui/screens/DeleteAccountScreen.js +19 -0
  134. package/lib/commonjs/ui/screens/DeleteAccountScreen.js.map +1 -0
  135. package/lib/commonjs/ui/screens/DomainsScreen.js +217 -0
  136. package/lib/commonjs/ui/screens/DomainsScreen.js.map +1 -0
  137. package/lib/commonjs/ui/screens/EditProfileScreen.js +1 -1
  138. package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -1
  139. package/lib/commonjs/ui/screens/FileManagementScreen.js +25 -11
  140. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  141. package/lib/commonjs/ui/screens/HelpSupportScreen.js +1 -17
  142. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  143. package/lib/commonjs/ui/screens/LinkCommonsScreen.js +14 -0
  144. package/lib/commonjs/ui/screens/LinkCommonsScreen.js.map +1 -0
  145. package/lib/commonjs/ui/screens/ManageAccountScreen.js +57 -61
  146. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  147. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +52 -62
  148. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  149. package/lib/commonjs/ui/screens/ProfileScreen.js +5 -13
  150. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  151. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +15 -24
  152. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  153. package/lib/commonjs/ui/screens/SignInAuthenticatorScreen.js +14 -0
  154. package/lib/commonjs/ui/screens/SignInAuthenticatorScreen.js.map +1 -0
  155. package/lib/commonjs/ui/screens/SignInPasswordScreen.js +20 -0
  156. package/lib/commonjs/ui/screens/SignInPasswordScreen.js.map +1 -0
  157. package/lib/commonjs/ui/screens/UserListScreen.js +3 -3
  158. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  159. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +1 -1
  160. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  161. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +25 -17
  162. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  163. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +2 -2
  164. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  165. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +8 -14
  166. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  167. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +11 -9
  168. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  169. package/lib/commonjs/ui/session/authStore.js +4 -4
  170. package/lib/commonjs/ui/session/authStore.js.map +1 -1
  171. package/lib/commonjs/ui/session/backgroundSession.js +5 -40
  172. package/lib/commonjs/ui/session/backgroundSession.js.map +1 -1
  173. package/lib/commonjs/ui/session/createSessionClient.js +3 -3
  174. package/lib/commonjs/ui/session/createSessionClient.js.map +1 -1
  175. package/lib/commonjs/ui/session/deviceCredentialTracker.js +42 -0
  176. package/lib/commonjs/ui/session/deviceCredentialTracker.js.map +1 -0
  177. package/lib/commonjs/ui/session/identityBinding.js +3 -3
  178. package/lib/commonjs/ui/session/identityBinding.js.map +1 -1
  179. package/lib/commonjs/ui/session/index.js +6 -6
  180. package/lib/commonjs/ui/session/index.js.map +1 -1
  181. package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js +2 -2
  182. package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js.map +1 -1
  183. package/lib/commonjs/ui/session/tokenTransport.js +3 -3
  184. package/lib/commonjs/ui/session/tokenTransport.js.map +1 -1
  185. package/lib/commonjs/ui/stores/assetStore.js +12 -0
  186. package/lib/commonjs/ui/stores/assetStore.js.map +1 -1
  187. package/lib/commonjs/ui/stores/followStore.js +6 -6
  188. package/lib/commonjs/ui/stores/followStore.js.map +1 -1
  189. package/lib/commonjs/ui/utils/accountDeletionHandoff.js +1 -4
  190. package/lib/commonjs/ui/utils/accountDeletionHandoff.js.map +1 -1
  191. package/lib/commonjs/ui/utils/avatarUtils.js +1 -1
  192. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  193. package/lib/commonjs/ui/utils/deviceCredential.js +11 -4
  194. package/lib/commonjs/ui/utils/deviceCredential.js.map +1 -1
  195. package/lib/commonjs/ui/utils/fileManagement.js +0 -10
  196. package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
  197. package/lib/commonjs/ui/utils/sessionHelpers.js +2 -2
  198. package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -1
  199. package/lib/module/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  200. package/lib/module/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  201. package/lib/module/assets/assets/fonts/icons/manifest.json +5 -21
  202. package/lib/module/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  203. package/lib/module/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  204. package/lib/module/assets/fonts/icons/manifest.json +5 -21
  205. package/lib/module/index.js +6 -6
  206. package/lib/module/index.js.map +1 -1
  207. package/lib/module/ui/boot/runProviderColdBoot.js +2 -1
  208. package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
  209. package/lib/module/ui/components/OxyAccountDialogScreen.js +2 -3
  210. package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
  211. package/lib/module/ui/components/OxyAuthChooser.js +15 -32
  212. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  213. package/lib/module/ui/components/OxySignInButton.js +1 -1
  214. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  215. package/lib/module/ui/components/OxySignInRequestSurface.js.map +1 -1
  216. package/lib/module/ui/components/ProfileButton.js +1 -1
  217. package/lib/module/ui/components/ProfileButton.js.map +1 -1
  218. package/lib/module/ui/components/authChooser/AccountsMenuView.js +1 -1
  219. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  220. package/lib/module/ui/components/authChooser/SignInRequestView.js +6 -17
  221. package/lib/module/ui/components/authChooser/SignInRequestView.js.map +1 -1
  222. package/lib/module/ui/components/authChooser/TroubleDisclosure.js +1 -1
  223. package/lib/module/ui/components/authChooser/primitives.js +2 -103
  224. package/lib/module/ui/components/authChooser/primitives.js.map +1 -1
  225. package/lib/module/ui/components/authChooser/requestSurfaces.js.map +1 -1
  226. package/lib/module/ui/components/authChooser/signInProgress.js.map +1 -1
  227. package/lib/module/ui/components/authChooser/styles.js +0 -33
  228. package/lib/module/ui/components/authChooser/styles.js.map +1 -1
  229. package/lib/module/ui/components/authChooser/types.js +0 -8
  230. package/lib/module/ui/components/authChooser/types.js.map +1 -1
  231. package/lib/module/ui/components/signIn/InlineCommonsQr.js +1 -1
  232. package/lib/module/ui/components/signIn/OxyAccountPicker.js +155 -58
  233. package/lib/module/ui/components/signIn/OxyAccountPicker.js.map +1 -1
  234. package/lib/module/ui/components/signIn/OxyAuthenticatorPanel.js +321 -0
  235. package/lib/module/ui/components/signIn/OxyAuthenticatorPanel.js.map +1 -0
  236. package/lib/module/ui/components/signIn/OxyDeleteAccountPanel.js +54 -58
  237. package/lib/module/ui/components/signIn/OxyDeleteAccountPanel.js.map +1 -1
  238. package/lib/module/ui/components/signIn/OxyLinkCommonsPanel.js +48 -38
  239. package/lib/module/ui/components/signIn/OxyLinkCommonsPanel.js.map +1 -1
  240. package/lib/module/ui/components/signIn/OxyPasswordPanel.js +136 -0
  241. package/lib/module/ui/components/signIn/OxyPasswordPanel.js.map +1 -0
  242. package/lib/module/ui/components/signIn/OxySignInPanel.js +496 -201
  243. package/lib/module/ui/components/signIn/OxySignInPanel.js.map +1 -1
  244. package/lib/module/ui/components/signIn/OxySignUpPanel.js +212 -43
  245. package/lib/module/ui/components/signIn/OxySignUpPanel.js.map +1 -1
  246. package/lib/module/ui/components/signIn/ReauthStep.js +181 -0
  247. package/lib/module/ui/components/signIn/ReauthStep.js.map +1 -0
  248. package/lib/module/ui/components/signIn/accountFlowParts.js +97 -26
  249. package/lib/module/ui/components/signIn/accountFlowParts.js.map +1 -1
  250. package/lib/module/ui/components/signIn/signInFlowStore.js +44 -0
  251. package/lib/module/ui/components/signIn/signInFlowStore.js.map +1 -0
  252. package/lib/module/ui/components/signIn/signInMethods.js +11 -25
  253. package/lib/module/ui/components/signIn/signInMethods.js.map +1 -1
  254. package/lib/module/ui/context/OxyContext.js +121 -115
  255. package/lib/module/ui/context/OxyContext.js.map +1 -1
  256. package/lib/module/ui/context/hooks/useAuthOperations.js +7 -7
  257. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  258. package/lib/module/ui/context/useOxyAccountGraph.js +4 -4
  259. package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
  260. package/lib/module/ui/hooks/mutations/mutationFactory.js +1 -1
  261. package/lib/module/ui/hooks/mutations/useAccountMutations.js +19 -9
  262. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  263. package/lib/module/ui/hooks/mutations/useServicesMutations.js +4 -4
  264. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  265. package/lib/module/ui/hooks/queries/queryKeys.js +23 -3
  266. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  267. package/lib/module/ui/hooks/queries/useAccountQueries.js +8 -8
  268. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  269. package/lib/module/ui/hooks/queries/useAuthMethods.js +25 -14
  270. package/lib/module/ui/hooks/queries/useAuthMethods.js.map +1 -1
  271. package/lib/module/ui/hooks/queries/useFileQueries.js +5 -2
  272. package/lib/module/ui/hooks/queries/useFileQueries.js.map +1 -1
  273. package/lib/module/ui/hooks/queries/usePaymentQueries.js +8 -8
  274. package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  275. package/lib/module/ui/hooks/queries/useSecurityQueries.js +4 -3
  276. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  277. package/lib/module/ui/hooks/queries/useServicesQueries.js +6 -6
  278. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  279. package/lib/module/ui/hooks/useAssets.js +36 -20
  280. package/lib/module/ui/hooks/useAssets.js.map +1 -1
  281. package/lib/module/ui/hooks/useAvatarPicker.js +6 -4
  282. package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
  283. package/lib/module/ui/hooks/useDeviceManagement.js +4 -4
  284. package/lib/module/ui/hooks/useDeviceManagement.js.map +1 -1
  285. package/lib/module/ui/hooks/useDeviceSwitcher.js +2 -2
  286. package/lib/module/ui/hooks/useDeviceSwitcher.js.map +1 -1
  287. package/lib/module/ui/hooks/useFileDownloadUrl.js +1 -4
  288. package/lib/module/ui/hooks/useFileDownloadUrl.js.map +1 -1
  289. package/lib/module/ui/hooks/useFollow.js +2 -2
  290. package/lib/module/ui/hooks/useFollow.js.map +1 -1
  291. package/lib/module/ui/hooks/useFollowTarget.js +5 -5
  292. package/lib/module/ui/hooks/useFollowTarget.js.map +1 -1
  293. package/lib/module/ui/hooks/useI18n.js +6 -3
  294. package/lib/module/ui/hooks/useI18n.js.map +1 -1
  295. package/lib/module/ui/hooks/useResolvedFileUrls.js +2 -2
  296. package/lib/module/ui/hooks/useResolvedFileUrls.js.map +1 -1
  297. package/lib/module/ui/hooks/useSessionManagement.js +3 -3
  298. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  299. package/lib/module/ui/icons/subsetGlyphMaps.js +0 -16
  300. package/lib/module/ui/icons/subsetGlyphMaps.js.map +1 -1
  301. package/lib/module/ui/navigation/routes.js +6 -4
  302. package/lib/module/ui/navigation/routes.js.map +1 -1
  303. package/lib/module/ui/navigation/surfaceRegistry.js +1 -1
  304. package/lib/module/ui/navigation/surfaceRegistry.js.map +1 -1
  305. package/lib/module/ui/oauth/browserBridge.js +239 -0
  306. package/lib/module/ui/oauth/browserBridge.js.map +1 -0
  307. package/lib/module/ui/oauth/completeOAuthCode.js +1 -1
  308. package/lib/module/ui/oauth/completeOAuthCode.js.map +1 -1
  309. package/lib/module/ui/oauth/explicitOAuthConsent.js +1 -1
  310. package/lib/module/ui/oauth/explicitOAuthConsent.js.map +1 -1
  311. package/lib/module/ui/runtime/createOxyRuntime.js +4 -3
  312. package/lib/module/ui/runtime/createOxyRuntime.js.map +1 -1
  313. package/lib/module/ui/runtime/runtimeContext.js.map +1 -1
  314. package/lib/module/ui/screens/AccountMembersScreen.js +7 -7
  315. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  316. package/lib/module/ui/screens/AccountSecurityPanelScreen.js +32 -0
  317. package/lib/module/ui/screens/AccountSecurityPanelScreen.js.map +1 -0
  318. package/lib/module/ui/screens/AccountSettingsScreen.js +3 -3
  319. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  320. package/lib/module/ui/screens/AccountVerificationScreen.js +1 -1
  321. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  322. package/lib/module/ui/screens/AppInfoScreen.js +5 -5
  323. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  324. package/lib/module/ui/screens/AvatarCropScreen.js +3 -3
  325. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  326. package/lib/module/ui/screens/ChangeAvatarScreen.js +1 -1
  327. package/lib/module/ui/screens/ChangeAvatarScreen.js.map +1 -1
  328. package/lib/module/ui/screens/CreateAccountScreen.js +1 -1
  329. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
  330. package/lib/module/ui/screens/DeleteAccountScreen.js +17 -0
  331. package/lib/module/ui/screens/DeleteAccountScreen.js.map +1 -0
  332. package/lib/module/ui/screens/DomainsScreen.js +212 -0
  333. package/lib/module/ui/screens/DomainsScreen.js.map +1 -0
  334. package/lib/module/ui/screens/EditProfileScreen.js +1 -1
  335. package/lib/module/ui/screens/EditProfileScreen.js.map +1 -1
  336. package/lib/module/ui/screens/FileManagementScreen.js +25 -11
  337. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  338. package/lib/module/ui/screens/HelpSupportScreen.js +1 -17
  339. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  340. package/lib/module/ui/screens/LinkCommonsScreen.js +12 -0
  341. package/lib/module/ui/screens/LinkCommonsScreen.js.map +1 -0
  342. package/lib/module/ui/screens/ManageAccountScreen.js +58 -62
  343. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  344. package/lib/module/ui/screens/PrivacySettingsScreen.js +53 -63
  345. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  346. package/lib/module/ui/screens/ProfileScreen.js +5 -13
  347. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  348. package/lib/module/ui/screens/SearchSettingsScreen.js +16 -25
  349. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  350. package/lib/module/ui/screens/SignInAuthenticatorScreen.js +12 -0
  351. package/lib/module/ui/screens/SignInAuthenticatorScreen.js.map +1 -0
  352. package/lib/module/ui/screens/SignInPasswordScreen.js +18 -0
  353. package/lib/module/ui/screens/SignInPasswordScreen.js.map +1 -0
  354. package/lib/module/ui/screens/UserListScreen.js +3 -3
  355. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  356. package/lib/module/ui/screens/WelcomeNewUserScreen.js +1 -1
  357. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  358. package/lib/module/ui/screens/trust/TrustCenterScreen.js +26 -18
  359. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  360. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +2 -2
  361. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  362. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +9 -15
  363. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  364. package/lib/module/ui/screens/trust/TrustRulesScreen.js +12 -10
  365. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  366. package/lib/module/ui/session/authStore.js +1 -1
  367. package/lib/module/ui/session/authStore.js.map +1 -1
  368. package/lib/module/ui/session/backgroundSession.js +5 -40
  369. package/lib/module/ui/session/backgroundSession.js.map +1 -1
  370. package/lib/module/ui/session/createSessionClient.js +1 -1
  371. package/lib/module/ui/session/createSessionClient.js.map +1 -1
  372. package/lib/module/ui/session/deviceCredentialTracker.js +38 -0
  373. package/lib/module/ui/session/deviceCredentialTracker.js.map +1 -0
  374. package/lib/module/ui/session/identityBinding.js +1 -1
  375. package/lib/module/ui/session/identityBinding.js.map +1 -1
  376. package/lib/module/ui/session/index.js +1 -1
  377. package/lib/module/ui/session/index.js.map +1 -1
  378. package/lib/module/ui/session/sharedDeviceCredentialStore.js +1 -1
  379. package/lib/module/ui/session/sharedDeviceCredentialStore.js.map +1 -1
  380. package/lib/module/ui/session/tokenTransport.js +3 -3
  381. package/lib/module/ui/session/tokenTransport.js.map +1 -1
  382. package/lib/module/ui/stores/assetStore.js +12 -0
  383. package/lib/module/ui/stores/assetStore.js.map +1 -1
  384. package/lib/module/ui/stores/followStore.js +6 -6
  385. package/lib/module/ui/stores/followStore.js.map +1 -1
  386. package/lib/module/ui/utils/accountDeletionHandoff.js +2 -5
  387. package/lib/module/ui/utils/accountDeletionHandoff.js.map +1 -1
  388. package/lib/module/ui/utils/avatarUtils.js +1 -1
  389. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  390. package/lib/module/ui/utils/deviceCredential.js +10 -3
  391. package/lib/module/ui/utils/deviceCredential.js.map +1 -1
  392. package/lib/module/ui/utils/fileManagement.js +0 -9
  393. package/lib/module/ui/utils/fileManagement.js.map +1 -1
  394. package/lib/module/ui/utils/sessionHelpers.js +2 -2
  395. package/lib/module/ui/utils/sessionHelpers.js.map +1 -1
  396. package/lib/typescript/commonjs/index.d.ts +5 -5
  397. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  398. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts +3 -2
  399. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  400. package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts +2 -3
  401. package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  402. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +7 -7
  403. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  404. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts +2 -1
  405. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts.map +1 -1
  406. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts +1 -1
  407. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  408. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts +3 -4
  409. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  410. package/lib/typescript/commonjs/ui/components/authChooser/TroubleDisclosure.d.ts +1 -1
  411. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts +1 -34
  412. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts.map +1 -1
  413. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts +2 -1
  414. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  415. package/lib/typescript/commonjs/ui/components/authChooser/signInFailureMessage.d.ts +1 -1
  416. package/lib/typescript/commonjs/ui/components/authChooser/signInFailureMessage.d.ts.map +1 -1
  417. package/lib/typescript/commonjs/ui/components/authChooser/signInProgress.d.ts +2 -1
  418. package/lib/typescript/commonjs/ui/components/authChooser/signInProgress.d.ts.map +1 -1
  419. package/lib/typescript/commonjs/ui/components/authChooser/styles.d.ts +0 -33
  420. package/lib/typescript/commonjs/ui/components/authChooser/styles.d.ts.map +1 -1
  421. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +1 -12
  422. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
  423. package/lib/typescript/commonjs/ui/components/signIn/InlineCommonsQr.d.ts +1 -1
  424. package/lib/typescript/commonjs/ui/components/signIn/InlineCommonsQr.d.ts.map +1 -1
  425. package/lib/typescript/commonjs/ui/components/signIn/OxyAccountPicker.d.ts +10 -4
  426. package/lib/typescript/commonjs/ui/components/signIn/OxyAccountPicker.d.ts.map +1 -1
  427. package/lib/typescript/commonjs/ui/components/signIn/OxyAuthenticatorPanel.d.ts +19 -0
  428. package/lib/typescript/commonjs/ui/components/signIn/OxyAuthenticatorPanel.d.ts.map +1 -0
  429. package/lib/typescript/commonjs/ui/components/signIn/OxyDeleteAccountPanel.d.ts +10 -6
  430. package/lib/typescript/commonjs/ui/components/signIn/OxyDeleteAccountPanel.d.ts.map +1 -1
  431. package/lib/typescript/commonjs/ui/components/signIn/OxyLinkCommonsPanel.d.ts +6 -6
  432. package/lib/typescript/commonjs/ui/components/signIn/OxyLinkCommonsPanel.d.ts.map +1 -1
  433. package/lib/typescript/commonjs/ui/components/signIn/OxyPasswordPanel.d.ts +15 -0
  434. package/lib/typescript/commonjs/ui/components/signIn/OxyPasswordPanel.d.ts.map +1 -0
  435. package/lib/typescript/commonjs/ui/components/signIn/OxySignInPanel.d.ts +21 -19
  436. package/lib/typescript/commonjs/ui/components/signIn/OxySignInPanel.d.ts.map +1 -1
  437. package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts +16 -7
  438. package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
  439. package/lib/typescript/commonjs/ui/components/signIn/ReauthStep.d.ts +34 -0
  440. package/lib/typescript/commonjs/ui/components/signIn/ReauthStep.d.ts.map +1 -0
  441. package/lib/typescript/commonjs/ui/components/signIn/accountFlowParts.d.ts +38 -12
  442. package/lib/typescript/commonjs/ui/components/signIn/accountFlowParts.d.ts.map +1 -1
  443. package/lib/typescript/commonjs/ui/components/signIn/signInFlowStore.d.ts +20 -0
  444. package/lib/typescript/commonjs/ui/components/signIn/signInFlowStore.d.ts.map +1 -0
  445. package/lib/typescript/commonjs/ui/components/signIn/signInMethods.d.ts +8 -21
  446. package/lib/typescript/commonjs/ui/components/signIn/signInMethods.d.ts.map +1 -1
  447. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  448. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +2 -1
  449. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  450. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +4 -39
  451. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  452. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +2 -1
  453. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  454. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts +1 -1
  455. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  456. package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts +1 -1
  457. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +4 -4
  458. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  459. package/lib/typescript/commonjs/ui/hooks/mutations/useServicesMutations.d.ts +5 -1
  460. package/lib/typescript/commonjs/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
  461. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +19 -1
  462. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  463. package/lib/typescript/commonjs/ui/hooks/queries/useAuthMethods.d.ts +13 -20
  464. package/lib/typescript/commonjs/ui/hooks/queries/useAuthMethods.d.ts.map +1 -1
  465. package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts +1 -1
  466. package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
  467. package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts +4 -4
  468. package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
  469. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts +3 -5
  470. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  471. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +5 -5
  472. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
  473. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts +1 -1
  474. package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts +1 -1
  475. package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts.map +1 -1
  476. package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
  477. package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts +1 -1
  478. package/lib/typescript/commonjs/ui/hooks/useI18n.d.ts.map +1 -1
  479. package/lib/typescript/commonjs/ui/hooks/useResolvedFileUrls.d.ts +9 -7
  480. package/lib/typescript/commonjs/ui/hooks/useResolvedFileUrls.d.ts.map +1 -1
  481. package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts +1 -1
  482. package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts.map +1 -1
  483. package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts +1 -1
  484. package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
  485. package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts +0 -16
  486. package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
  487. package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts +1 -1
  488. package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts.map +1 -1
  489. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
  490. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  491. package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts +7 -5
  492. package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts.map +1 -1
  493. package/lib/typescript/commonjs/ui/oauth/browserBridge.d.ts +97 -0
  494. package/lib/typescript/commonjs/ui/oauth/browserBridge.d.ts.map +1 -0
  495. package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts +6 -2
  496. package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts.map +1 -1
  497. package/lib/typescript/commonjs/ui/runtime/runtimeContext.d.ts +2 -1
  498. package/lib/typescript/commonjs/ui/runtime/runtimeContext.d.ts.map +1 -1
  499. package/lib/typescript/commonjs/ui/runtime/types.d.ts +2 -1
  500. package/lib/typescript/commonjs/ui/runtime/types.d.ts.map +1 -1
  501. package/lib/typescript/commonjs/ui/screens/AccountSecurityPanelScreen.d.ts +11 -0
  502. package/lib/typescript/commonjs/ui/screens/AccountSecurityPanelScreen.d.ts.map +1 -0
  503. package/lib/typescript/commonjs/ui/screens/DeleteAccountScreen.d.ts +6 -0
  504. package/lib/typescript/commonjs/ui/screens/DeleteAccountScreen.d.ts.map +1 -0
  505. package/lib/typescript/commonjs/ui/screens/{SavesCollectionsScreen.d.ts → DomainsScreen.d.ts} +1 -1
  506. package/lib/typescript/commonjs/ui/screens/DomainsScreen.d.ts.map +1 -0
  507. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  508. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  509. package/lib/typescript/commonjs/ui/screens/LinkCommonsScreen.d.ts +6 -0
  510. package/lib/typescript/commonjs/ui/screens/LinkCommonsScreen.d.ts.map +1 -0
  511. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  512. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  513. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  514. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  515. package/lib/typescript/commonjs/ui/screens/SignInAuthenticatorScreen.d.ts +6 -0
  516. package/lib/typescript/commonjs/ui/screens/SignInAuthenticatorScreen.d.ts.map +1 -0
  517. package/lib/typescript/commonjs/ui/screens/SignInPasswordScreen.d.ts +6 -0
  518. package/lib/typescript/commonjs/ui/screens/SignInPasswordScreen.d.ts.map +1 -0
  519. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  520. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  521. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  522. package/lib/typescript/commonjs/ui/session/authStore.d.ts +1 -1
  523. package/lib/typescript/commonjs/ui/session/authStore.d.ts.map +1 -1
  524. package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts +3 -4
  525. package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts.map +1 -1
  526. package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts +2 -1
  527. package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts.map +1 -1
  528. package/lib/typescript/commonjs/ui/session/deviceCredentialTracker.d.ts +23 -0
  529. package/lib/typescript/commonjs/ui/session/deviceCredentialTracker.d.ts.map +1 -0
  530. package/lib/typescript/commonjs/ui/session/identityBinding.d.ts +1 -1
  531. package/lib/typescript/commonjs/ui/session/identityBinding.d.ts.map +1 -1
  532. package/lib/typescript/commonjs/ui/session/index.d.ts +1 -1
  533. package/lib/typescript/commonjs/ui/session/index.d.ts.map +1 -1
  534. package/lib/typescript/commonjs/ui/session/nativeSecureStorage.d.ts +1 -1
  535. package/lib/typescript/commonjs/ui/session/nativeSecureStorage.d.ts.map +1 -1
  536. package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts +1 -1
  537. package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -1
  538. package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts +3 -2
  539. package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts.map +1 -1
  540. package/lib/typescript/commonjs/ui/stores/assetStore.d.ts +7 -0
  541. package/lib/typescript/commonjs/ui/stores/assetStore.d.ts.map +1 -1
  542. package/lib/typescript/commonjs/ui/types/navigation.d.ts +1 -1
  543. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  544. package/lib/typescript/commonjs/ui/utils/accountDeletionHandoff.d.ts.map +1 -1
  545. package/lib/typescript/commonjs/ui/utils/deviceCredential.d.ts +10 -3
  546. package/lib/typescript/commonjs/ui/utils/deviceCredential.d.ts.map +1 -1
  547. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +1 -5
  548. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
  549. package/lib/typescript/module/index.d.ts +5 -5
  550. package/lib/typescript/module/index.d.ts.map +1 -1
  551. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts +3 -2
  552. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  553. package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts +2 -3
  554. package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  555. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +7 -7
  556. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  557. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts +2 -1
  558. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts.map +1 -1
  559. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts +1 -1
  560. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  561. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts +3 -4
  562. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  563. package/lib/typescript/module/ui/components/authChooser/TroubleDisclosure.d.ts +1 -1
  564. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts +1 -34
  565. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts.map +1 -1
  566. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts +2 -1
  567. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  568. package/lib/typescript/module/ui/components/authChooser/signInFailureMessage.d.ts +1 -1
  569. package/lib/typescript/module/ui/components/authChooser/signInFailureMessage.d.ts.map +1 -1
  570. package/lib/typescript/module/ui/components/authChooser/signInProgress.d.ts +2 -1
  571. package/lib/typescript/module/ui/components/authChooser/signInProgress.d.ts.map +1 -1
  572. package/lib/typescript/module/ui/components/authChooser/styles.d.ts +0 -33
  573. package/lib/typescript/module/ui/components/authChooser/styles.d.ts.map +1 -1
  574. package/lib/typescript/module/ui/components/authChooser/types.d.ts +1 -12
  575. package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
  576. package/lib/typescript/module/ui/components/signIn/InlineCommonsQr.d.ts +1 -1
  577. package/lib/typescript/module/ui/components/signIn/InlineCommonsQr.d.ts.map +1 -1
  578. package/lib/typescript/module/ui/components/signIn/OxyAccountPicker.d.ts +10 -4
  579. package/lib/typescript/module/ui/components/signIn/OxyAccountPicker.d.ts.map +1 -1
  580. package/lib/typescript/module/ui/components/signIn/OxyAuthenticatorPanel.d.ts +19 -0
  581. package/lib/typescript/module/ui/components/signIn/OxyAuthenticatorPanel.d.ts.map +1 -0
  582. package/lib/typescript/module/ui/components/signIn/OxyDeleteAccountPanel.d.ts +10 -6
  583. package/lib/typescript/module/ui/components/signIn/OxyDeleteAccountPanel.d.ts.map +1 -1
  584. package/lib/typescript/module/ui/components/signIn/OxyLinkCommonsPanel.d.ts +6 -6
  585. package/lib/typescript/module/ui/components/signIn/OxyLinkCommonsPanel.d.ts.map +1 -1
  586. package/lib/typescript/module/ui/components/signIn/OxyPasswordPanel.d.ts +15 -0
  587. package/lib/typescript/module/ui/components/signIn/OxyPasswordPanel.d.ts.map +1 -0
  588. package/lib/typescript/module/ui/components/signIn/OxySignInPanel.d.ts +21 -19
  589. package/lib/typescript/module/ui/components/signIn/OxySignInPanel.d.ts.map +1 -1
  590. package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts +16 -7
  591. package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
  592. package/lib/typescript/module/ui/components/signIn/ReauthStep.d.ts +34 -0
  593. package/lib/typescript/module/ui/components/signIn/ReauthStep.d.ts.map +1 -0
  594. package/lib/typescript/module/ui/components/signIn/accountFlowParts.d.ts +38 -12
  595. package/lib/typescript/module/ui/components/signIn/accountFlowParts.d.ts.map +1 -1
  596. package/lib/typescript/module/ui/components/signIn/signInFlowStore.d.ts +20 -0
  597. package/lib/typescript/module/ui/components/signIn/signInFlowStore.d.ts.map +1 -0
  598. package/lib/typescript/module/ui/components/signIn/signInMethods.d.ts +8 -21
  599. package/lib/typescript/module/ui/components/signIn/signInMethods.d.ts.map +1 -1
  600. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  601. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +2 -1
  602. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  603. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +4 -39
  604. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  605. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +2 -1
  606. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  607. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts +1 -1
  608. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  609. package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts +1 -1
  610. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +4 -4
  611. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  612. package/lib/typescript/module/ui/hooks/mutations/useServicesMutations.d.ts +5 -1
  613. package/lib/typescript/module/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
  614. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +19 -1
  615. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  616. package/lib/typescript/module/ui/hooks/queries/useAuthMethods.d.ts +13 -20
  617. package/lib/typescript/module/ui/hooks/queries/useAuthMethods.d.ts.map +1 -1
  618. package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts +1 -1
  619. package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
  620. package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts +4 -4
  621. package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
  622. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts +3 -5
  623. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  624. package/lib/typescript/module/ui/hooks/useAssets.d.ts +5 -5
  625. package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
  626. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts +1 -1
  627. package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts +1 -1
  628. package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts.map +1 -1
  629. package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
  630. package/lib/typescript/module/ui/hooks/useFollow.d.ts +1 -1
  631. package/lib/typescript/module/ui/hooks/useI18n.d.ts.map +1 -1
  632. package/lib/typescript/module/ui/hooks/useResolvedFileUrls.d.ts +9 -7
  633. package/lib/typescript/module/ui/hooks/useResolvedFileUrls.d.ts.map +1 -1
  634. package/lib/typescript/module/ui/icons/Ionicons.d.ts +1 -1
  635. package/lib/typescript/module/ui/icons/Ionicons.d.ts.map +1 -1
  636. package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts +1 -1
  637. package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
  638. package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts +0 -16
  639. package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
  640. package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts +1 -1
  641. package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts.map +1 -1
  642. package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
  643. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  644. package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts +7 -5
  645. package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts.map +1 -1
  646. package/lib/typescript/module/ui/oauth/browserBridge.d.ts +97 -0
  647. package/lib/typescript/module/ui/oauth/browserBridge.d.ts.map +1 -0
  648. package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts +6 -2
  649. package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts.map +1 -1
  650. package/lib/typescript/module/ui/runtime/runtimeContext.d.ts +2 -1
  651. package/lib/typescript/module/ui/runtime/runtimeContext.d.ts.map +1 -1
  652. package/lib/typescript/module/ui/runtime/types.d.ts +2 -1
  653. package/lib/typescript/module/ui/runtime/types.d.ts.map +1 -1
  654. package/lib/typescript/module/ui/screens/AccountSecurityPanelScreen.d.ts +11 -0
  655. package/lib/typescript/module/ui/screens/AccountSecurityPanelScreen.d.ts.map +1 -0
  656. package/lib/typescript/module/ui/screens/DeleteAccountScreen.d.ts +6 -0
  657. package/lib/typescript/module/ui/screens/DeleteAccountScreen.d.ts.map +1 -0
  658. package/lib/typescript/module/ui/screens/{SavesCollectionsScreen.d.ts → DomainsScreen.d.ts} +1 -1
  659. package/lib/typescript/module/ui/screens/DomainsScreen.d.ts.map +1 -0
  660. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  661. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  662. package/lib/typescript/module/ui/screens/LinkCommonsScreen.d.ts +6 -0
  663. package/lib/typescript/module/ui/screens/LinkCommonsScreen.d.ts.map +1 -0
  664. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  665. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  666. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  667. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  668. package/lib/typescript/module/ui/screens/SignInAuthenticatorScreen.d.ts +6 -0
  669. package/lib/typescript/module/ui/screens/SignInAuthenticatorScreen.d.ts.map +1 -0
  670. package/lib/typescript/module/ui/screens/SignInPasswordScreen.d.ts +6 -0
  671. package/lib/typescript/module/ui/screens/SignInPasswordScreen.d.ts.map +1 -0
  672. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  673. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  674. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  675. package/lib/typescript/module/ui/session/authStore.d.ts +1 -1
  676. package/lib/typescript/module/ui/session/authStore.d.ts.map +1 -1
  677. package/lib/typescript/module/ui/session/backgroundSession.d.ts +3 -4
  678. package/lib/typescript/module/ui/session/backgroundSession.d.ts.map +1 -1
  679. package/lib/typescript/module/ui/session/createSessionClient.d.ts +2 -1
  680. package/lib/typescript/module/ui/session/createSessionClient.d.ts.map +1 -1
  681. package/lib/typescript/module/ui/session/deviceCredentialTracker.d.ts +23 -0
  682. package/lib/typescript/module/ui/session/deviceCredentialTracker.d.ts.map +1 -0
  683. package/lib/typescript/module/ui/session/identityBinding.d.ts +1 -1
  684. package/lib/typescript/module/ui/session/identityBinding.d.ts.map +1 -1
  685. package/lib/typescript/module/ui/session/index.d.ts +1 -1
  686. package/lib/typescript/module/ui/session/index.d.ts.map +1 -1
  687. package/lib/typescript/module/ui/session/nativeSecureStorage.d.ts +1 -1
  688. package/lib/typescript/module/ui/session/nativeSecureStorage.d.ts.map +1 -1
  689. package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts +1 -1
  690. package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -1
  691. package/lib/typescript/module/ui/session/tokenTransport.d.ts +3 -2
  692. package/lib/typescript/module/ui/session/tokenTransport.d.ts.map +1 -1
  693. package/lib/typescript/module/ui/stores/assetStore.d.ts +7 -0
  694. package/lib/typescript/module/ui/stores/assetStore.d.ts.map +1 -1
  695. package/lib/typescript/module/ui/types/navigation.d.ts +1 -1
  696. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  697. package/lib/typescript/module/ui/utils/accountDeletionHandoff.d.ts.map +1 -1
  698. package/lib/typescript/module/ui/utils/deviceCredential.d.ts +10 -3
  699. package/lib/typescript/module/ui/utils/deviceCredential.d.ts.map +1 -1
  700. package/lib/typescript/module/ui/utils/fileManagement.d.ts +1 -5
  701. package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
  702. package/package.json +4 -5
  703. package/src/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  704. package/src/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  705. package/src/assets/fonts/icons/manifest.json +5 -21
  706. package/src/index.ts +8 -8
  707. package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +4 -4
  708. package/src/ui/boot/runProviderColdBoot.ts +3 -9
  709. package/src/ui/components/OxyAccountDialogScreen.tsx +2 -3
  710. package/src/ui/components/OxyAuthChooser.tsx +13 -36
  711. package/src/ui/components/OxySignInButton.tsx +1 -1
  712. package/src/ui/components/OxySignInRequestSurface.tsx +2 -1
  713. package/src/ui/components/ProfileButton.tsx +1 -1
  714. package/src/ui/components/authChooser/AccountsMenuView.tsx +1 -6
  715. package/src/ui/components/authChooser/SignInRequestView.tsx +5 -23
  716. package/src/ui/components/authChooser/TroubleDisclosure.tsx +1 -1
  717. package/src/ui/components/authChooser/primitives.tsx +2 -96
  718. package/src/ui/components/authChooser/requestSurfaces.tsx +2 -1
  719. package/src/ui/components/authChooser/signInFailureMessage.ts +1 -1
  720. package/src/ui/components/authChooser/signInProgress.ts +2 -1
  721. package/src/ui/components/authChooser/styles.ts +0 -33
  722. package/src/ui/components/authChooser/types.ts +1 -13
  723. package/src/ui/components/signIn/InlineCommonsQr.tsx +2 -2
  724. package/src/ui/components/signIn/OxyAccountPicker.tsx +131 -66
  725. package/src/ui/components/signIn/OxyAuthenticatorPanel.tsx +294 -0
  726. package/src/ui/components/signIn/OxyDeleteAccountPanel.tsx +48 -61
  727. package/src/ui/components/signIn/OxyLinkCommonsPanel.tsx +43 -35
  728. package/src/ui/components/signIn/OxyPasswordPanel.tsx +117 -0
  729. package/src/ui/components/signIn/OxySignInPanel.tsx +534 -214
  730. package/src/ui/components/signIn/OxySignUpPanel.tsx +186 -56
  731. package/src/ui/components/signIn/ReauthStep.tsx +201 -0
  732. package/src/ui/components/signIn/accountFlowParts.tsx +139 -33
  733. package/src/ui/components/signIn/signInFlowStore.ts +41 -0
  734. package/src/ui/components/signIn/signInMethods.ts +10 -29
  735. package/src/ui/context/OxyContext.tsx +124 -145
  736. package/src/ui/context/hooks/useAuthOperations.ts +9 -8
  737. package/src/ui/context/oxyContextTypes.ts +4 -41
  738. package/src/ui/context/useOxyAccountGraph.ts +6 -5
  739. package/src/ui/hooks/accountDialogSnapshot.ts +1 -1
  740. package/src/ui/hooks/mutations/mutationFactory.ts +1 -1
  741. package/src/ui/hooks/mutations/useAccountMutations.ts +11 -10
  742. package/src/ui/hooks/mutations/useServicesMutations.ts +4 -4
  743. package/src/ui/hooks/queries/queryKeys.ts +26 -2
  744. package/src/ui/hooks/queries/useAccountQueries.ts +8 -8
  745. package/src/ui/hooks/queries/useAuthMethods.ts +22 -19
  746. package/src/ui/hooks/queries/useFileQueries.ts +2 -2
  747. package/src/ui/hooks/queries/usePaymentQueries.ts +8 -8
  748. package/src/ui/hooks/queries/useSecurityQueries.ts +4 -3
  749. package/src/ui/hooks/queries/useServicesQueries.ts +6 -6
  750. package/src/ui/hooks/useAssets.ts +26 -31
  751. package/src/ui/hooks/useAvatarPicker.ts +4 -4
  752. package/src/ui/hooks/useDeviceManagement.ts +4 -4
  753. package/src/ui/hooks/useDeviceSwitcher.ts +2 -7
  754. package/src/ui/hooks/useFileDownloadUrl.ts +1 -5
  755. package/src/ui/hooks/useFollow.ts +2 -2
  756. package/src/ui/hooks/useFollowTarget.ts +5 -5
  757. package/src/ui/hooks/useI18n.ts +6 -3
  758. package/src/ui/hooks/useResolvedFileUrls.ts +8 -6
  759. package/src/ui/hooks/useSessionManagement.ts +3 -3
  760. package/src/ui/icons/subsetGlyphMaps.ts +0 -16
  761. package/src/ui/navigation/__tests__/getSurfaceConfig.test.ts +1 -1
  762. package/src/ui/navigation/accountDialogManager.ts +1 -1
  763. package/src/ui/navigation/routes.ts +11 -8
  764. package/src/ui/navigation/surfaceRegistry.ts +8 -6
  765. package/src/ui/oauth/__tests__/browserAuthTransport.test.ts +8 -8
  766. package/src/ui/oauth/__tests__/browserBridge.test.ts +198 -0
  767. package/src/ui/oauth/__tests__/completeOAuthCode.test.ts +1 -1
  768. package/src/ui/oauth/__tests__/explicitOAuthConsent.test.ts +11 -11
  769. package/src/ui/oauth/__tests__/sharedCompletionPath.test.ts +7 -7
  770. package/src/ui/oauth/browserBridge.ts +234 -0
  771. package/src/ui/oauth/completeOAuthCode.ts +1 -1
  772. package/src/ui/oauth/explicitOAuthConsent.ts +1 -1
  773. package/src/ui/runtime/createOxyRuntime.ts +8 -16
  774. package/src/ui/runtime/runtimeContext.tsx +2 -1
  775. package/src/ui/runtime/types.ts +2 -1
  776. package/src/ui/screens/AccountMembersScreen.tsx +7 -7
  777. package/src/ui/screens/AccountSecurityPanelScreen.tsx +26 -0
  778. package/src/ui/screens/AccountSettingsScreen.tsx +3 -3
  779. package/src/ui/screens/AccountVerificationScreen.tsx +1 -1
  780. package/src/ui/screens/AppInfoScreen.tsx +5 -5
  781. package/src/ui/screens/AvatarCropScreen.tsx +3 -3
  782. package/src/ui/screens/ChangeAvatarScreen.tsx +1 -1
  783. package/src/ui/screens/CreateAccountScreen.tsx +1 -1
  784. package/src/ui/screens/DeleteAccountScreen.tsx +13 -0
  785. package/src/ui/screens/DomainsScreen.tsx +187 -0
  786. package/src/ui/screens/EditProfileScreen.tsx +1 -1
  787. package/src/ui/screens/FileManagementScreen.tsx +15 -21
  788. package/src/ui/screens/HelpSupportScreen.tsx +0 -15
  789. package/src/ui/screens/LinkCommonsScreen.tsx +13 -0
  790. package/src/ui/screens/ManageAccountScreen.tsx +47 -82
  791. package/src/ui/screens/PrivacySettingsScreen.tsx +48 -67
  792. package/src/ui/screens/ProfileScreen.tsx +5 -10
  793. package/src/ui/screens/SearchSettingsScreen.tsx +15 -27
  794. package/src/ui/screens/SignInAuthenticatorScreen.tsx +13 -0
  795. package/src/ui/screens/SignInPasswordScreen.tsx +13 -0
  796. package/src/ui/screens/UserListScreen.tsx +3 -3
  797. package/src/ui/screens/WelcomeNewUserScreen.tsx +1 -1
  798. package/src/ui/screens/trust/TrustCenterScreen.tsx +25 -29
  799. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +2 -2
  800. package/src/ui/screens/trust/TrustRewardsScreen.tsx +9 -19
  801. package/src/ui/screens/trust/TrustRulesScreen.tsx +14 -14
  802. package/src/ui/session/__tests__/authStore.test.ts +1 -1
  803. package/src/ui/session/__tests__/backgroundSession.test.ts +2 -61
  804. package/src/ui/session/__tests__/createSessionClient.test.ts +7 -9
  805. package/src/ui/session/__tests__/sharedDeviceCredentialStore.test.ts +1 -1
  806. package/src/ui/session/__tests__/tokenTransport.test.ts +9 -7
  807. package/src/ui/session/authStore.ts +1 -7
  808. package/src/ui/session/backgroundSession.ts +5 -41
  809. package/src/ui/session/createSessionClient.ts +2 -6
  810. package/src/ui/session/deviceCredentialTracker.ts +49 -0
  811. package/src/ui/session/identityBinding.ts +1 -6
  812. package/src/ui/session/index.ts +1 -1
  813. package/src/ui/session/nativeSecureStorage.ts +1 -1
  814. package/src/ui/session/sharedDeviceCredentialStore.ts +1 -6
  815. package/src/ui/session/tokenTransport.ts +5 -4
  816. package/src/ui/stores/__tests__/followStore.test.ts +13 -15
  817. package/src/ui/stores/assetStore.ts +15 -0
  818. package/src/ui/stores/followStore.ts +7 -7
  819. package/src/ui/types/navigation.ts +2 -1
  820. package/src/ui/utils/accountDeletionHandoff.ts +2 -4
  821. package/src/ui/utils/avatarUtils.ts +1 -1
  822. package/src/ui/utils/deviceCredential.ts +11 -4
  823. package/src/ui/utils/fileManagement.ts +0 -12
  824. package/src/ui/utils/sessionHelpers.ts +2 -2
  825. package/lib/commonjs/ui/components/signIn/OxyCreateAccountPanel.js +0 -236
  826. package/lib/commonjs/ui/components/signIn/OxyCreateAccountPanel.js.map +0 -1
  827. package/lib/commonjs/ui/components/signIn/OxyRecoverAccountPanel.js +0 -170
  828. package/lib/commonjs/ui/components/signIn/OxyRecoverAccountPanel.js.map +0 -1
  829. package/lib/commonjs/ui/components/signIn/passkeyError.js +0 -46
  830. package/lib/commonjs/ui/components/signIn/passkeyError.js.map +0 -1
  831. package/lib/commonjs/ui/context/passkeyFlow.js +0 -114
  832. package/lib/commonjs/ui/context/passkeyFlow.js.map +0 -1
  833. package/lib/commonjs/ui/screens/FAQScreen.js +0 -162
  834. package/lib/commonjs/ui/screens/FAQScreen.js.map +0 -1
  835. package/lib/commonjs/ui/screens/FeedbackScreen.js +0 -601
  836. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +0 -1
  837. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +0 -968
  838. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +0 -1
  839. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +0 -132
  840. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +0 -1
  841. package/lib/commonjs/webauthn/passkeyClient.js +0 -39
  842. package/lib/commonjs/webauthn/passkeyClient.js.map +0 -1
  843. package/lib/commonjs/webauthn/passkeyClient.native.js +0 -34
  844. package/lib/commonjs/webauthn/passkeyClient.native.js.map +0 -1
  845. package/lib/commonjs/webauthn/passkeyClient.web.js +0 -57
  846. package/lib/commonjs/webauthn/passkeyClient.web.js.map +0 -1
  847. package/lib/module/ui/components/signIn/OxyCreateAccountPanel.js +0 -231
  848. package/lib/module/ui/components/signIn/OxyCreateAccountPanel.js.map +0 -1
  849. package/lib/module/ui/components/signIn/OxyRecoverAccountPanel.js +0 -165
  850. package/lib/module/ui/components/signIn/OxyRecoverAccountPanel.js.map +0 -1
  851. package/lib/module/ui/components/signIn/passkeyError.js +0 -40
  852. package/lib/module/ui/components/signIn/passkeyError.js.map +0 -1
  853. package/lib/module/ui/context/passkeyFlow.js +0 -107
  854. package/lib/module/ui/context/passkeyFlow.js.map +0 -1
  855. package/lib/module/ui/screens/FAQScreen.js +0 -157
  856. package/lib/module/ui/screens/FAQScreen.js.map +0 -1
  857. package/lib/module/ui/screens/FeedbackScreen.js +0 -599
  858. package/lib/module/ui/screens/FeedbackScreen.js.map +0 -1
  859. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +0 -963
  860. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +0 -1
  861. package/lib/module/ui/screens/SavesCollectionsScreen.js +0 -127
  862. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +0 -1
  863. package/lib/module/webauthn/passkeyClient.js +0 -33
  864. package/lib/module/webauthn/passkeyClient.js.map +0 -1
  865. package/lib/module/webauthn/passkeyClient.native.js +0 -28
  866. package/lib/module/webauthn/passkeyClient.native.js.map +0 -1
  867. package/lib/module/webauthn/passkeyClient.web.js +0 -52
  868. package/lib/module/webauthn/passkeyClient.web.js.map +0 -1
  869. package/lib/typescript/commonjs/ui/components/signIn/OxyCreateAccountPanel.d.ts +0 -24
  870. package/lib/typescript/commonjs/ui/components/signIn/OxyCreateAccountPanel.d.ts.map +0 -1
  871. package/lib/typescript/commonjs/ui/components/signIn/OxyRecoverAccountPanel.d.ts +0 -20
  872. package/lib/typescript/commonjs/ui/components/signIn/OxyRecoverAccountPanel.d.ts.map +0 -1
  873. package/lib/typescript/commonjs/ui/components/signIn/passkeyError.d.ts +0 -16
  874. package/lib/typescript/commonjs/ui/components/signIn/passkeyError.d.ts.map +0 -1
  875. package/lib/typescript/commonjs/ui/context/passkeyFlow.d.ts +0 -92
  876. package/lib/typescript/commonjs/ui/context/passkeyFlow.d.ts.map +0 -1
  877. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts +0 -5
  878. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts.map +0 -1
  879. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts +0 -5
  880. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +0 -1
  881. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts +0 -5
  882. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +0 -1
  883. package/lib/typescript/commonjs/ui/screens/SavesCollectionsScreen.d.ts.map +0 -1
  884. package/lib/typescript/commonjs/webauthn/passkeyClient.d.ts +0 -20
  885. package/lib/typescript/commonjs/webauthn/passkeyClient.d.ts.map +0 -1
  886. package/lib/typescript/commonjs/webauthn/passkeyClient.native.d.ts +0 -15
  887. package/lib/typescript/commonjs/webauthn/passkeyClient.native.d.ts.map +0 -1
  888. package/lib/typescript/commonjs/webauthn/passkeyClient.web.d.ts +0 -36
  889. package/lib/typescript/commonjs/webauthn/passkeyClient.web.d.ts.map +0 -1
  890. package/lib/typescript/module/ui/components/signIn/OxyCreateAccountPanel.d.ts +0 -24
  891. package/lib/typescript/module/ui/components/signIn/OxyCreateAccountPanel.d.ts.map +0 -1
  892. package/lib/typescript/module/ui/components/signIn/OxyRecoverAccountPanel.d.ts +0 -20
  893. package/lib/typescript/module/ui/components/signIn/OxyRecoverAccountPanel.d.ts.map +0 -1
  894. package/lib/typescript/module/ui/components/signIn/passkeyError.d.ts +0 -16
  895. package/lib/typescript/module/ui/components/signIn/passkeyError.d.ts.map +0 -1
  896. package/lib/typescript/module/ui/context/passkeyFlow.d.ts +0 -92
  897. package/lib/typescript/module/ui/context/passkeyFlow.d.ts.map +0 -1
  898. package/lib/typescript/module/ui/screens/FAQScreen.d.ts +0 -5
  899. package/lib/typescript/module/ui/screens/FAQScreen.d.ts.map +0 -1
  900. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts +0 -5
  901. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +0 -1
  902. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts +0 -5
  903. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +0 -1
  904. package/lib/typescript/module/ui/screens/SavesCollectionsScreen.d.ts.map +0 -1
  905. package/lib/typescript/module/webauthn/passkeyClient.d.ts +0 -20
  906. package/lib/typescript/module/webauthn/passkeyClient.d.ts.map +0 -1
  907. package/lib/typescript/module/webauthn/passkeyClient.native.d.ts +0 -15
  908. package/lib/typescript/module/webauthn/passkeyClient.native.d.ts.map +0 -1
  909. package/lib/typescript/module/webauthn/passkeyClient.web.d.ts +0 -36
  910. package/lib/typescript/module/webauthn/passkeyClient.web.d.ts.map +0 -1
  911. package/src/ui/components/signIn/OxyCreateAccountPanel.tsx +0 -207
  912. package/src/ui/components/signIn/OxyRecoverAccountPanel.tsx +0 -154
  913. package/src/ui/components/signIn/passkeyError.ts +0 -44
  914. package/src/ui/context/__tests__/passkeyFlow.test.ts +0 -239
  915. package/src/ui/context/passkeyFlow.ts +0 -145
  916. package/src/ui/screens/FAQScreen.tsx +0 -200
  917. package/src/ui/screens/FeedbackScreen.tsx +0 -766
  918. package/src/ui/screens/PremiumSubscriptionScreen.tsx +0 -1103
  919. package/src/ui/screens/SavesCollectionsScreen.tsx +0 -167
  920. package/src/webauthn/passkeyClient.native.ts +0 -26
  921. package/src/webauthn/passkeyClient.ts +0 -31
  922. package/src/webauthn/passkeyClient.web.ts +0 -56
@@ -0,0 +1,198 @@
1
+ /**
2
+ * The browser bridge, the app half (ADR 0029 D2): the window opens from the
3
+ * press, carries a PKCE-bound request, accepts only its own answer, joins, and
4
+ * always closes.
5
+ */
6
+ import { createHash } from 'node:crypto';
7
+ import { OxyServices } from '@oxy.so/core';
8
+ import {
9
+ OXY_BRIDGE_CODE_MESSAGE_TYPE,
10
+ OXY_BRIDGE_ERROR_MESSAGE_TYPE,
11
+ OXY_BRIDGE_WINDOW_NAME,
12
+ openBridgeWindow,
13
+ readBridgeMessage,
14
+ resolveBridgeOrigin,
15
+ runBrowserBridge,
16
+ } from '../browserBridge';
17
+ import { trackDeviceCredential } from '../../session/deviceCredentialTracker';
18
+ import type { OAuthPopupHandle } from '../types';
19
+
20
+ const AUTH = 'https://auth.oxy.so';
21
+ const APP = 'https://mention.earth';
22
+
23
+ interface ControllablePopup extends OAuthPopupHandle {
24
+ close: jest.Mock;
25
+ }
26
+
27
+ function fakePopup(): ControllablePopup {
28
+ let closed = false;
29
+ return {
30
+ get closed() {
31
+ return closed;
32
+ },
33
+ close: jest.fn(() => {
34
+ closed = true;
35
+ }),
36
+ location: { href: '' },
37
+ };
38
+ }
39
+
40
+ function dispatchMessage(init: { data: unknown; origin: string; source: unknown }): void {
41
+ const event = new Event('message');
42
+ Object.assign(event, init);
43
+ window.dispatchEvent(event);
44
+ }
45
+
46
+ /** Wait until the popup has been navigated to the bridge, and read its query. */
47
+ async function navigated(popup: OAuthPopupHandle): Promise<URL> {
48
+ for (let i = 0; i < 100 && !popup.location.href; i += 1) {
49
+ await new Promise((resolve) => setTimeout(resolve, 5));
50
+ }
51
+ return new URL(popup.location.href);
52
+ }
53
+
54
+ afterEach(() => jest.restoreAllMocks());
55
+
56
+ describe('resolveBridgeOrigin', () => {
57
+ it('is auth.oxy.so by default and follows an authorize override', () => {
58
+ expect(resolveBridgeOrigin()).toBe(AUTH);
59
+ expect(resolveBridgeOrigin('http://localhost:8105/authorize')).toBe('http://localhost:8105');
60
+ expect(resolveBridgeOrigin('not a url')).toBeNull();
61
+ });
62
+ });
63
+
64
+ describe('openBridgeWindow', () => {
65
+ it('opens an empty, tiny, separately named window', () => {
66
+ const handle = fakePopup();
67
+ const open = jest.spyOn(window, 'open').mockReturnValue(handle as unknown as Window);
68
+ expect(openBridgeWindow()).toBe(handle);
69
+ expect(open).toHaveBeenCalledWith('', OXY_BRIDGE_WINDOW_NAME, expect.stringContaining('width=1,height=1'));
70
+ });
71
+
72
+ it('is null when blocked or when open throws', () => {
73
+ jest.spyOn(window, 'open').mockReturnValue(null);
74
+ expect(openBridgeWindow()).toBeNull();
75
+ jest.spyOn(window, 'open').mockImplementation(() => {
76
+ throw new Error('blocked');
77
+ });
78
+ expect(openBridgeWindow()).toBeNull();
79
+ });
80
+ });
81
+
82
+ describe('readBridgeMessage', () => {
83
+ const popup = fakePopup();
84
+ const context = { expectedOrigin: AUTH, expectedState: 'st', popup };
85
+ const code = { type: OXY_BRIDGE_CODE_MESSAGE_TYPE, code: 'c1', state: 'st' };
86
+
87
+ it('accepts only its own window, origin and state', () => {
88
+ expect(readBridgeMessage({ origin: AUTH, source: popup as never, data: code }, context)).toEqual({ kind: 'code', code: 'c1' });
89
+ expect(readBridgeMessage({ origin: 'https://evil.example', source: popup as never, data: code }, context).kind).toBe('ignore');
90
+ expect(readBridgeMessage({ origin: AUTH, source: fakePopup() as never, data: code }, context).kind).toBe('ignore');
91
+ expect(readBridgeMessage({ origin: AUTH, source: popup as never, data: { ...code, state: 'other' } }, context).kind).toBe('ignore');
92
+ expect(readBridgeMessage({ origin: AUTH, source: popup as never, data: 'nope' }, context).kind).toBe('ignore');
93
+ expect(
94
+ readBridgeMessage(
95
+ { origin: AUTH, source: popup as never, data: { type: OXY_BRIDGE_ERROR_MESSAGE_TYPE, error: 'x', state: 'st' } },
96
+ context,
97
+ ),
98
+ ).toEqual({ kind: 'error', error: 'x' });
99
+ });
100
+ });
101
+
102
+ describe('runBrowserBridge', () => {
103
+ it('navigates with a PKCE-bound request, joins with the verifier, and closes', async () => {
104
+ const oxy = new OxyServices({ baseURL: 'http://test.invalid' });
105
+ const join = jest.spyOn(oxy.devices, 'joinBrowser').mockResolvedValue({ deviceId: 'dev-1', deviceSecret: 'app-secret' });
106
+ const popup = fakePopup();
107
+
108
+ const result = runBrowserBridge({ popup, bridgeOrigin: AUTH, oxyServices: oxy, clientId: 'oxy_dk_1', redirectUri: APP });
109
+ const url = await navigated(popup);
110
+ expect(url.origin + url.pathname).toBe(`${AUTH}/bridge`);
111
+ expect(url.searchParams.get('client_id')).toBe('oxy_dk_1');
112
+ expect(url.searchParams.get('redirect_uri')).toBe(APP);
113
+ expect(url.searchParams.get('code_challenge_method')).toBe('S256');
114
+ const state = url.searchParams.get('state');
115
+ const challenge = url.searchParams.get('code_challenge');
116
+
117
+ dispatchMessage({ origin: 'https://evil.example', source: popup, data: { type: OXY_BRIDGE_CODE_MESSAGE_TYPE, code: 'forged', state } });
118
+ dispatchMessage({ origin: AUTH, source: popup, data: { type: OXY_BRIDGE_CODE_MESSAGE_TYPE, code: 'code-1', state } });
119
+
120
+ expect(await result).toEqual({ ok: true, deviceId: 'dev-1', deviceSecret: 'app-secret' });
121
+ const [request] = join.mock.calls[0];
122
+ expect(request.code).toBe('code-1');
123
+ expect(request.clientId).toBe('oxy_dk_1');
124
+ expect(request.redirectUri).toBe(APP);
125
+ // The verifier is the one whose S256 digest was sent as the challenge.
126
+ expect(createHash('sha256').update(request.codeVerifier).digest('base64url')).toBe(challenge);
127
+ expect(popup.close).toHaveBeenCalled();
128
+ });
129
+
130
+ it('reports a bridge error, a closed window and a timeout, closing the window each time', async () => {
131
+ const oxy = new OxyServices({ baseURL: 'http://test.invalid' });
132
+ const join = jest.spyOn(oxy.devices, 'joinBrowser');
133
+
134
+ let popup = fakePopup();
135
+ let result = runBrowserBridge({ popup, bridgeOrigin: AUTH, oxyServices: oxy, clientId: 'c', redirectUri: APP });
136
+ let state = (await navigated(popup)).searchParams.get('state');
137
+ dispatchMessage({ origin: AUTH, source: popup, data: { type: OXY_BRIDGE_ERROR_MESSAGE_TYPE, error: 'invalid_client', state } });
138
+ expect(await result).toEqual({ ok: false, reason: 'bridge-error' });
139
+ expect(popup.close).toHaveBeenCalled();
140
+
141
+ popup = fakePopup();
142
+ result = runBrowserBridge({ popup, bridgeOrigin: AUTH, oxyServices: oxy, clientId: 'c', redirectUri: APP });
143
+ await navigated(popup);
144
+ popup.close();
145
+ expect(await result).toEqual({ ok: false, reason: 'closed' });
146
+
147
+ popup = fakePopup();
148
+ result = runBrowserBridge({ popup, bridgeOrigin: AUTH, oxyServices: oxy, clientId: 'c', redirectUri: APP, timeoutMs: 50 });
149
+ state = (await navigated(popup)).searchParams.get('state');
150
+ expect(state).toBeTruthy();
151
+ expect(await result).toEqual({ ok: false, reason: 'timed-out' });
152
+ expect(popup.close).toHaveBeenCalled();
153
+ expect(join).not.toHaveBeenCalled();
154
+ });
155
+
156
+ it('a failed join is a failed bridge, never a thrown error', async () => {
157
+ const oxy = new OxyServices({ baseURL: 'http://test.invalid' });
158
+ jest.spyOn(oxy.devices, 'joinBrowser').mockRejectedValue(new Error('invalid_grant'));
159
+ const popup = fakePopup();
160
+ const result = runBrowserBridge({ popup, bridgeOrigin: AUTH, oxyServices: oxy, clientId: 'c', redirectUri: APP });
161
+ const state = (await navigated(popup)).searchParams.get('state');
162
+ dispatchMessage({ origin: AUTH, source: popup, data: { type: OXY_BRIDGE_CODE_MESSAGE_TYPE, code: 'code-1', state } });
163
+ expect(await result).toEqual({ ok: false, reason: 'join-failed' });
164
+ });
165
+ });
166
+
167
+ describe('trackDeviceCredential', () => {
168
+ it('knows the held credential synchronously once the store has been read', async () => {
169
+ let stored: { sessionId: string; userId: string; deviceId?: string; deviceSecret?: string } | null = null;
170
+ const store = trackDeviceCredential({
171
+ load: async () => stored,
172
+ save: async (state) => {
173
+ stored = state;
174
+ return true;
175
+ },
176
+ clear: async () => {
177
+ stored = null;
178
+ },
179
+ });
180
+ expect(store.heldDeviceCredential()).toBeUndefined();
181
+ await store.load();
182
+ expect(store.heldDeviceCredential()).toBeNull();
183
+ await store.save({ sessionId: '', userId: '', deviceId: 'd', deviceSecret: 's' });
184
+ expect(store.heldDeviceCredential()).toEqual({ deviceId: 'd', deviceSecret: 's' });
185
+ await store.clear();
186
+ expect(store.heldDeviceCredential()).toBeNull();
187
+ });
188
+ });
189
+
190
+ describe('hasPersistedSessionCredential', () => {
191
+ it('a credential without an account cannot bring a lost session back', async () => {
192
+ const { hasPersistedSessionCredential } = await import('../../utils/deviceCredential');
193
+ const store = (state: unknown) => ({ load: async () => state, save: async () => true, clear: async () => undefined }) as never;
194
+ expect(await hasPersistedSessionCredential(store({ sessionId: 's', userId: 'u', deviceId: 'd', deviceSecret: 'x' }))).toBe(true);
195
+ expect(await hasPersistedSessionCredential(store({ sessionId: '', userId: '', deviceId: 'd', deviceSecret: 'x' }))).toBe(false);
196
+ expect(await hasPersistedSessionCredential(store(null))).toBe(false);
197
+ });
198
+ });
@@ -15,7 +15,7 @@ const SESSION = {
15
15
  };
16
16
 
17
17
  function makeOxyServices(exchange: jest.Mock): OxyServices {
18
- return { exchangeOAuthCode: exchange } as unknown as OxyServices;
18
+ return { auth: { oauth: { exchangeCode: exchange } } } as unknown as OxyServices;
19
19
  }
20
20
 
21
21
  describe('completeOAuthCode', () => {
@@ -44,16 +44,16 @@ function makeContext(
44
44
  platform,
45
45
  mode: "popup",
46
46
  oxyServices: {
47
- getPublicApplication,
48
- exchangeOAuthCode,
47
+ apps: { getPublic: getPublicApplication },
48
+ auth: { oauth: { exchangeCode: exchangeOAuthCode } },
49
49
  } as unknown as OxyServices,
50
50
  clientId: CLIENT_ID,
51
51
  identityBound: false,
52
52
  expectedUserId: USER_ID,
53
53
  commitSession,
54
54
  ...overrides,
55
- getPublicApplication,
56
- exchangeOAuthCode,
55
+ apps: { getPublic: getPublicApplication },
56
+ auth: { oauth: { exchangeCode: exchangeOAuthCode } },
57
57
  };
58
58
  }
59
59
 
@@ -148,7 +148,7 @@ describe("requestOAuthConsent", () => {
148
148
  expect(authorizeUrl?.searchParams.get("code_challenge_method")).toBe(
149
149
  "S256",
150
150
  );
151
- const exchange = context.exchangeOAuthCode.mock.calls[0][0];
151
+ const exchange = context.auth.oauth.exchangeCode.mock.calls[0][0];
152
152
  await expect(computeCodeChallenge(exchange.codeVerifier)).resolves.toBe(
153
153
  authorizeUrl?.searchParams.get("code_challenge"),
154
154
  );
@@ -167,7 +167,7 @@ describe("requestOAuthConsent", () => {
167
167
  scopes: EXACT_SCOPES,
168
168
  }),
169
169
  ).resolves.toEqual({ status: "failed", reason: "native-callback-invalid" });
170
- expect(wrongTarget.exchangeOAuthCode).not.toHaveBeenCalled();
170
+ expect(wrongTarget.auth.oauth.exchangeCode).not.toHaveBeenCalled();
171
171
 
172
172
  const wrongState = makeContext("native");
173
173
  openNative.mockResolvedValueOnce({
@@ -179,7 +179,7 @@ describe("requestOAuthConsent", () => {
179
179
  scopes: EXACT_SCOPES,
180
180
  }),
181
181
  ).resolves.toEqual({ status: "failed", reason: "state-mismatch" });
182
- expect(wrongState.exchangeOAuthCode).not.toHaveBeenCalled();
182
+ expect(wrongState.auth.oauth.exchangeCode).not.toHaveBeenCalled();
183
183
  expect(wrongState.commitSession).not.toHaveBeenCalled();
184
184
  });
185
185
 
@@ -199,7 +199,7 @@ describe("requestOAuthConsent", () => {
199
199
  scopes,
200
200
  }),
201
201
  ).resolves.toEqual({ status: "failed", reason: "invalid-scopes" });
202
- expect(context.getPublicApplication).not.toHaveBeenCalled();
202
+ expect(context.apps.getPublic).not.toHaveBeenCalled();
203
203
  expect(openNative).not.toHaveBeenCalled();
204
204
  },
205
205
  );
@@ -213,7 +213,7 @@ describe("requestOAuthConsent", () => {
213
213
  }),
214
214
  ).resolves.toEqual({ status: "failed", reason: "scope-not-configured" });
215
215
  expect(openNative).not.toHaveBeenCalled();
216
- expect(context.exchangeOAuthCode).not.toHaveBeenCalled();
216
+ expect(context.auth.oauth.exchangeCode).not.toHaveBeenCalled();
217
217
  });
218
218
 
219
219
  it.each([
@@ -228,14 +228,14 @@ describe("requestOAuthConsent", () => {
228
228
  await expect(
229
229
  requestOAuthConsent(context, { redirectUri, scopes: EXACT_SCOPES }),
230
230
  ).resolves.toEqual({ status: "failed", reason: "invalid-redirect-uri" });
231
- expect(context.getPublicApplication).not.toHaveBeenCalled();
231
+ expect(context.apps.getPublic).not.toHaveBeenCalled();
232
232
  expect(openNative).not.toHaveBeenCalled();
233
233
  },
234
234
  );
235
235
 
236
236
  it("does not commit or report consent when OAuth returns another user", async () => {
237
237
  const context = makeContext("native");
238
- context.exchangeOAuthCode.mockResolvedValue({
238
+ context.auth.oauth.exchangeCode.mockResolvedValue({
239
239
  sessionId: "other-session",
240
240
  accessToken: "other-token",
241
241
  user: { id: "another-user" },
@@ -42,12 +42,12 @@ function makeContext(mode: 'popup' | 'redirect'): WebOAuthTransportContext & {
42
42
  const exchangeOAuthCode = jest.fn();
43
43
  return {
44
44
  mode,
45
- oxyServices: { exchangeOAuthCode } as unknown as OxyServices,
45
+ oxyServices: { auth: { oauth: { exchangeCode: exchangeOAuthCode } } } as unknown as OxyServices,
46
46
  clientId: CLIENT_ID,
47
47
  authorizeBaseUrl: `${IDP_ORIGIN}/authorize`,
48
48
  identityBound: false,
49
49
  commitSession: jest.fn().mockResolvedValue(undefined),
50
- exchangeOAuthCode,
50
+ auth: { oauth: { exchangeCode: exchangeOAuthCode } },
51
51
  };
52
52
  }
53
53
 
@@ -97,12 +97,12 @@ describe('shared OAuth completion path', () => {
97
97
  // Nothing was persisted, so there is nothing for this lane to clean up.
98
98
  expect(input.cleanup).toBeUndefined();
99
99
  // The transport never exchanges the code itself.
100
- expect(context.exchangeOAuthCode).not.toHaveBeenCalled();
100
+ expect(context.auth.oauth.exchangeCode).not.toHaveBeenCalled();
101
101
  });
102
102
 
103
103
  it('the redirect return leg completes through completeOAuthCode with the persisted handshake', async () => {
104
104
  const exchangeOAuthCode = jest.fn();
105
- const oxyServices = { exchangeOAuthCode } as unknown as OxyServices;
105
+ const oxyServices = { auth: { oauth: { exchangeCode: exchangeOAuthCode } } } as unknown as OxyServices;
106
106
  sessionStorage.setItem(OXY_OAUTH_STATE_STORAGE_KEY, 'state-from-storage');
107
107
  sessionStorage.setItem(OXY_OAUTH_CODE_VERIFIER_STORAGE_KEY, 'verifier-from-storage');
108
108
  window.history.replaceState({}, '', '/feed?code=code-2&state=state-from-storage');
@@ -139,7 +139,7 @@ describe('shared OAuth completion path', () => {
139
139
 
140
140
  await expect(
141
141
  tryCompleteOAuthReturn({
142
- oxyServices: { exchangeOAuthCode: jest.fn() } as unknown as OxyServices,
142
+ oxyServices: { auth: { oauth: { exchangeCode: jest.fn() } } } as unknown as OxyServices,
143
143
  clientId: CLIENT_ID,
144
144
  commitSession: jest.fn().mockResolvedValue(undefined),
145
145
  }),
@@ -151,7 +151,7 @@ describe('shared OAuth completion path', () => {
151
151
 
152
152
  await expect(
153
153
  tryCompleteOAuthReturn({
154
- oxyServices: { exchangeOAuthCode: jest.fn() } as unknown as OxyServices,
154
+ oxyServices: { auth: { oauth: { exchangeCode: jest.fn() } } } as unknown as OxyServices,
155
155
  clientId: null,
156
156
  commitSession: jest.fn().mockResolvedValue(undefined),
157
157
  }),
@@ -164,7 +164,7 @@ describe('shared OAuth completion path', () => {
164
164
 
165
165
  await expect(
166
166
  tryCompleteOAuthReturn({
167
- oxyServices: { exchangeOAuthCode: jest.fn() } as unknown as OxyServices,
167
+ oxyServices: { auth: { oauth: { exchangeCode: jest.fn() } } } as unknown as OxyServices,
168
168
  clientId: CLIENT_ID,
169
169
  commitSession: jest.fn().mockResolvedValue(undefined),
170
170
  }),
@@ -0,0 +1,234 @@
1
+ /**
2
+ * The browser bridge, the app half (ADR 0029 D2).
3
+ *
4
+ * Different domains share no storage, so the browser's ONE Oxy session lives on
5
+ * auth.oxy.so. The first time a person presses sign-in in an Oxy web app that
6
+ * holds no device credential, the app opens `auth.oxy.so/bridge` from that press:
7
+ * a page with no UI that proves (or registers) auth.oxy.so's device, posts this
8
+ * app a one-use code bound to its client id, its exact redirect URI and a PKCE
9
+ * challenge, and closes. The app redeems the code with the verifier only it
10
+ * holds (`POST /session/device/join`) and from then on holds its own credential
11
+ * on the shared device — it never opens the bridge again.
12
+ *
13
+ * Three browser realities, the same ones as the OAuth popup (`oauthPopup.ts`):
14
+ * the window must be opened SYNCHRONOUSLY from the press (gesture attribution),
15
+ * so it is opened empty and navigated once the PKCE pair exists; a cross-origin
16
+ * window fires nothing when it closes, so `closed` is polled; and its result
17
+ * arrives only as a `postMessage`, accepted from the auth origin and from that
18
+ * exact window, carrying this attempt's `state`.
19
+ *
20
+ * Nothing here is required for signing in: a blocked window, a timeout or any
21
+ * failure only means this app signs in on a device of its own, as before.
22
+ */
23
+
24
+ import { AUTH_WEB_ORIGIN, generateOAuthState, generatePkcePair, logger } from '@oxy.so/core';
25
+ import type { OxyServices } from '@oxy.so/core';
26
+ import type { OAuthPopupHandle } from './types';
27
+
28
+ /** `postMessage` discriminator for a join code from the bridge. */
29
+ export const OXY_BRIDGE_CODE_MESSAGE_TYPE = 'oxy:bridge:code';
30
+ /** `postMessage` discriminator for a bridge that could not produce a code. */
31
+ export const OXY_BRIDGE_ERROR_MESSAGE_TYPE = 'oxy:bridge:error';
32
+
33
+ /** Its own name, so it never reuses (and navigates away) the sign-in popup. */
34
+ export const OXY_BRIDGE_WINDOW_NAME = 'oxy-bridge';
35
+
36
+ /**
37
+ * How long the bridge may take (ms). It normally answers in a few hundred ms; the
38
+ * ceiling only stops a wedged window from holding the attempt open.
39
+ */
40
+ export const DEFAULT_BRIDGE_TIMEOUT_MS = 15_000;
41
+
42
+ const CLOSE_POLL_INTERVAL_MS = 250;
43
+ const CLOSE_GRACE_MS = 300;
44
+
45
+ /** The auth origin the bridge lives on: the authorize override's, else auth.oxy.so. */
46
+ export function resolveBridgeOrigin(authorizeBaseUrl?: string): string | null {
47
+ if (!authorizeBaseUrl) return AUTH_WEB_ORIGIN;
48
+ try {
49
+ const origin = new URL(authorizeBaseUrl).origin;
50
+ return origin.startsWith('http') ? origin : null;
51
+ } catch {
52
+ return null;
53
+ }
54
+ }
55
+
56
+ interface BridgeHost {
57
+ open?: (url: string, target: string, features: string) => OAuthPopupHandle | null;
58
+ addEventListener?: (type: 'message', listener: (event: MessageEvent) => void) => void;
59
+ removeEventListener?: (type: 'message', listener: (event: MessageEvent) => void) => void;
60
+ screenX?: number;
61
+ screenY?: number;
62
+ outerWidth?: number;
63
+ outerHeight?: number;
64
+ }
65
+
66
+ function bridgeHost(): BridgeHost | null {
67
+ const win = (globalThis as { window?: BridgeHost }).window;
68
+ return win ?? null;
69
+ }
70
+
71
+ /**
72
+ * Open the bridge window, EMPTY, as small as the browser allows and centred over
73
+ * the app. MUST be called synchronously from the press. Returns `null` when the
74
+ * browser blocked it or there is no DOM — never throws.
75
+ */
76
+ export function openBridgeWindow(): OAuthPopupHandle | null {
77
+ const win = bridgeHost();
78
+ if (!win || typeof win.open !== 'function') return null;
79
+ const left = Math.round((win.screenX ?? 0) + (win.outerWidth ?? 0) / 2);
80
+ const top = Math.round((win.screenY ?? 0) + (win.outerHeight ?? 0) / 2);
81
+ const features = `popup=yes,width=1,height=1,left=${left},top=${top},menubar=no,toolbar=no,location=no,status=no`;
82
+ try {
83
+ return win.open('', OXY_BRIDGE_WINDOW_NAME, features) ?? null;
84
+ } catch (error) {
85
+ logger.debug('Could not open the browser bridge window', { component: 'browserBridge' }, error);
86
+ return null;
87
+ }
88
+ }
89
+
90
+ function closeBridgeWindow(popup: OAuthPopupHandle): void {
91
+ try {
92
+ if (!popup.closed) popup.close();
93
+ } catch {
94
+ // Already gone.
95
+ }
96
+ }
97
+
98
+ /** The fields of a `message` event the verdict reads. */
99
+ interface BridgeMessageEvent {
100
+ origin: string;
101
+ source: unknown;
102
+ data: unknown;
103
+ }
104
+
105
+ /** Verdict for one `message` event. */
106
+ export type BridgeMessageVerdict =
107
+ | { kind: 'ignore' }
108
+ | { kind: 'code'; code: string }
109
+ | { kind: 'error'; error: string };
110
+
111
+ /**
112
+ * Classify one `message` event. Accepted only from the bridge origin AND the
113
+ * exact window this attempt opened, in one of the two shapes, with this
114
+ * attempt's `state`; everything else is page noise and ignored.
115
+ */
116
+ export function readBridgeMessage(
117
+ event: BridgeMessageEvent,
118
+ context: { expectedOrigin: string; expectedState: string; popup: unknown },
119
+ ): BridgeMessageVerdict {
120
+ if (event.origin !== context.expectedOrigin) return { kind: 'ignore' };
121
+ if (event.source !== context.popup) return { kind: 'ignore' };
122
+ const data = event.data as Record<string, unknown> | null;
123
+ if (typeof data !== 'object' || data === null) return { kind: 'ignore' };
124
+ if (data.state !== context.expectedState) return { kind: 'ignore' };
125
+ if (data.type === OXY_BRIDGE_CODE_MESSAGE_TYPE && typeof data.code === 'string' && data.code.length > 0) {
126
+ return { kind: 'code', code: data.code };
127
+ }
128
+ if (data.type === OXY_BRIDGE_ERROR_MESSAGE_TYPE && typeof data.error === 'string') {
129
+ return { kind: 'error', error: data.error };
130
+ }
131
+ return { kind: 'ignore' };
132
+ }
133
+
134
+ export interface RunBrowserBridgeOptions {
135
+ /** The window {@link openBridgeWindow} returned from the press. */
136
+ popup: OAuthPopupHandle;
137
+ /** Where the bridge lives ({@link resolveBridgeOrigin}). */
138
+ bridgeOrigin: string;
139
+ oxyServices: OxyServices;
140
+ /** This app's registered client id. */
141
+ clientId: string;
142
+ /** This app's EXACT registered redirect URI; its origin is where the code is posted. */
143
+ redirectUri: string;
144
+ /** @default DEFAULT_BRIDGE_TIMEOUT_MS */
145
+ timeoutMs?: number;
146
+ }
147
+
148
+ export type BrowserBridgeResult =
149
+ | { ok: true; deviceId: string; deviceSecret: string }
150
+ | { ok: false; reason: 'closed' | 'timed-out' | 'bridge-error' | 'join-failed' | 'no-browser' };
151
+
152
+ /**
153
+ * Drive an opened bridge window to a device credential for this app. Settles
154
+ * exactly once, closes the window whatever the outcome, and never rejects.
155
+ */
156
+ export async function runBrowserBridge(options: RunBrowserBridgeOptions): Promise<BrowserBridgeResult> {
157
+ const { popup, bridgeOrigin, oxyServices, clientId, redirectUri } = options;
158
+ const host = bridgeHost();
159
+ if (!host || typeof host.addEventListener !== 'function' || typeof host.removeEventListener !== 'function') {
160
+ closeBridgeWindow(popup);
161
+ return { ok: false, reason: 'no-browser' };
162
+ }
163
+ try {
164
+ const [pkce, state] = await Promise.all([generatePkcePair(), generateOAuthState()]);
165
+ const url = new URL('/bridge', bridgeOrigin);
166
+ url.searchParams.set('client_id', clientId);
167
+ url.searchParams.set('redirect_uri', redirectUri);
168
+ url.searchParams.set('state', state);
169
+ url.searchParams.set('code_challenge', pkce.codeChallenge);
170
+ url.searchParams.set('code_challenge_method', 'S256');
171
+ try {
172
+ popup.location.href = url.toString();
173
+ } catch {
174
+ return { ok: false, reason: 'closed' };
175
+ }
176
+
177
+ const verdict = await awaitBridgeMessage(host, {
178
+ popup,
179
+ expectedOrigin: bridgeOrigin,
180
+ expectedState: state,
181
+ timeoutMs: options.timeoutMs ?? DEFAULT_BRIDGE_TIMEOUT_MS,
182
+ });
183
+ if (verdict.kind !== 'code') return { ok: false, reason: verdict.kind };
184
+
185
+ try {
186
+ const joined = await oxyServices.devices.joinBrowser({
187
+ code: verdict.code,
188
+ codeVerifier: pkce.codeVerifier,
189
+ clientId,
190
+ redirectUri,
191
+ });
192
+ return { ok: true, deviceId: joined.deviceId, deviceSecret: joined.deviceSecret };
193
+ } catch (error) {
194
+ logger.warn('Joining the browser device failed', { component: 'browserBridge' }, error);
195
+ return { ok: false, reason: 'join-failed' };
196
+ }
197
+ } catch (error) {
198
+ logger.warn('The browser bridge failed', { component: 'browserBridge' }, error);
199
+ return { ok: false, reason: 'bridge-error' };
200
+ } finally {
201
+ closeBridgeWindow(popup);
202
+ }
203
+ }
204
+
205
+ function awaitBridgeMessage(
206
+ host: BridgeHost,
207
+ context: { popup: OAuthPopupHandle; expectedOrigin: string; expectedState: string; timeoutMs: number },
208
+ ): Promise<{ kind: 'code'; code: string } | { kind: 'closed' | 'timed-out' | 'bridge-error' }> {
209
+ return new Promise((resolve) => {
210
+ let settled = false;
211
+ let closeGrace: ReturnType<typeof setTimeout> | null = null;
212
+ const onMessage = (event: MessageEvent): void => {
213
+ const verdict = readBridgeMessage(event, context);
214
+ if (verdict.kind === 'code') settle({ kind: 'code', code: verdict.code });
215
+ else if (verdict.kind === 'error') settle({ kind: 'bridge-error' });
216
+ };
217
+ const timeout = setTimeout(() => settle({ kind: 'timed-out' }), context.timeoutMs);
218
+ const poll = setInterval(() => {
219
+ if (!context.popup.closed || closeGrace !== null) return;
220
+ // The bridge posts and THEN closes; let an already-queued message win.
221
+ closeGrace = setTimeout(() => settle({ kind: 'closed' }), CLOSE_GRACE_MS);
222
+ }, CLOSE_POLL_INTERVAL_MS);
223
+ function settle(outcome: { kind: 'code'; code: string } | { kind: 'closed' | 'timed-out' | 'bridge-error' }): void {
224
+ if (settled) return;
225
+ settled = true;
226
+ host.removeEventListener?.('message', onMessage);
227
+ clearTimeout(timeout);
228
+ clearInterval(poll);
229
+ if (closeGrace !== null) clearTimeout(closeGrace);
230
+ resolve(outcome);
231
+ }
232
+ host.addEventListener?.('message', onMessage);
233
+ });
234
+ }
@@ -68,7 +68,7 @@ export async function completeOAuthCode(
68
68
  }
69
69
 
70
70
  try {
71
- const result = await input.oxyServices.exchangeOAuthCode({
71
+ const result = await input.oxyServices.auth.oauth.exchangeCode({
72
72
  code: input.code,
73
73
  clientId: input.clientId,
74
74
  redirectUri: input.redirectUri,
@@ -165,7 +165,7 @@ export async function requestOAuthConsent(
165
165
 
166
166
  let application: PublicApplication;
167
167
  try {
168
- application = await context.oxyServices.getPublicApplication(
168
+ application = await context.oxyServices.apps.getPublic(
169
169
  context.clientId,
170
170
  );
171
171
  } catch {
@@ -1,16 +1,8 @@
1
1
  import type { DeviceDirectory, DeviceSessionState } from '@oxy.so/contracts';
2
- import type { ClientSession, DeviceContext, User } from '@oxy.so/core';
3
- import {
4
- accountIdsOf,
5
- activeSessionIdOf,
6
- activeUserOf,
7
- deviceStateToClientSessions,
8
- mergeSessions as mergeSessionLists,
9
- normalizeAndSortSessions,
10
- normalizeUserIdentity,
11
- resolveActiveContext,
12
- sessionsArraysEqual,
13
- } from '@oxy.so/core';
2
+ import type { ClientSession, User } from '@oxy.so/core';
3
+ import type { DeviceContext } from '@oxy.so/core/session';
4
+ import { accountIdsOf, activeSessionIdOf, activeUserOf, deviceStateToClientSessions, resolveActiveContext } from '@oxy.so/core/session';
5
+ import { mergeSessions as mergeSessionLists, normalizeAndSortSessions, normalizeUserIdentity, sessionsArraysEqual } from '@oxy.so/core';
14
6
  import type { IdentitySessionBinding } from '../session/identityBinding';
15
7
  import type { OxyRuntimeSnapshot, OxyRuntimeStatus, OxyTokenStatus } from './types';
16
8
 
@@ -36,8 +28,8 @@ export interface SubjectTransition {
36
28
  * pretends to implement.
37
29
  */
38
30
  export interface RuntimeClient {
39
- getAccessToken(): string | null;
40
- getUsersByIds(ids: string[]): Promise<User[]>;
31
+ session: { readonly accessToken: string | null };
32
+ users: { getMany(ids: string[]): Promise<User[]> };
41
33
  }
42
34
 
43
35
  export interface RuntimeSessionClient {
@@ -257,7 +249,7 @@ export function createOxyRuntime(config: OxyRuntimeConfig): OxyRuntime {
257
249
  error: null,
258
250
  storageReady: false,
259
251
  tokenReady: true,
260
- hasAccessToken: Boolean(oxyServices.getAccessToken()),
252
+ hasAccessToken: Boolean(oxyServices.session.accessToken),
261
253
  authResolved: false,
262
254
  switching: false,
263
255
  };
@@ -423,7 +415,7 @@ export function createOxyRuntime(config: OxyRuntimeConfig): OxyRuntime {
423
415
  const ids = accountIdsOf(state);
424
416
  let users: User[] = [];
425
417
  try {
426
- users = ids.length > 0 ? await oxyServices.getUsersByIds(ids) : [];
418
+ users = ids.length > 0 ? await oxyServices.users.getMany(ids) : [];
427
419
  } catch (fetchError) {
428
420
  logger('Failed to resolve account profiles during the device projection', fetchError);
429
421
  return;
@@ -1,6 +1,7 @@
1
1
  import { createContext, useContext } from 'react';
2
2
  import type { DeviceDirectory } from '@oxy.so/contracts';
3
- import type { DeviceContext, User } from '@oxy.so/core';
3
+ import type { DeviceContext } from '@oxy.so/core/session';
4
+ import type { User } from '@oxy.so/core';
4
5
  import type { OxyRuntime } from './createOxyRuntime';
5
6
  import type { OxyRuntimeStatus } from './types';
6
7
  import { useRuntimeSelector, useRuntimeSnapshot } from './useRuntimeSnapshot';
@@ -1,5 +1,6 @@
1
1
  import type { DeviceDirectory, DeviceSessionState } from '@oxy.so/contracts';
2
- import type { ClientSession, DeviceContext, User } from '@oxy.so/core';
2
+ import type { ClientSession, User } from '@oxy.so/core';
3
+ import type { DeviceContext } from '@oxy.so/core/session';
3
4
 
4
5
  /**
5
6
  * The runtime's coarse verdict about this device's session.