@oxyhq/services 5.17.17 → 5.18.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 (618) hide show
  1. package/README.md +32 -38
  2. package/lib/commonjs/core/CrossDomainAuth.js +277 -0
  3. package/lib/commonjs/core/CrossDomainAuth.js.map +1 -0
  4. package/lib/commonjs/core/HttpService.js +82 -15
  5. package/lib/commonjs/core/HttpService.js.map +1 -1
  6. package/lib/commonjs/core/OxyServices.base.js +11 -3
  7. package/lib/commonjs/core/OxyServices.base.js.map +1 -1
  8. package/lib/commonjs/core/OxyServices.js +4 -1
  9. package/lib/commonjs/core/OxyServices.js.map +1 -1
  10. package/lib/commonjs/core/index.js +30 -0
  11. package/lib/commonjs/core/index.js.map +1 -1
  12. package/lib/commonjs/core/mixins/OxyServices.assets.js +16 -3
  13. package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
  14. package/lib/commonjs/core/mixins/OxyServices.auth.js +73 -32
  15. package/lib/commonjs/core/mixins/OxyServices.auth.js.map +1 -1
  16. package/lib/commonjs/core/mixins/OxyServices.features.js +372 -0
  17. package/lib/commonjs/core/mixins/OxyServices.features.js.map +1 -0
  18. package/lib/commonjs/core/mixins/OxyServices.fedcm.js +289 -0
  19. package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +1 -0
  20. package/lib/commonjs/core/mixins/OxyServices.popup.js +352 -0
  21. package/lib/commonjs/core/mixins/OxyServices.popup.js.map +1 -0
  22. package/lib/commonjs/core/mixins/OxyServices.redirect.js +378 -0
  23. package/lib/commonjs/core/mixins/OxyServices.redirect.js.map +1 -0
  24. package/lib/commonjs/core/mixins/OxyServices.user.js +35 -24
  25. package/lib/commonjs/core/mixins/OxyServices.user.js.map +1 -1
  26. package/lib/commonjs/core/mixins/index.js +28 -15
  27. package/lib/commonjs/core/mixins/index.js.map +1 -1
  28. package/lib/commonjs/crypto/index.js +30 -0
  29. package/lib/commonjs/crypto/index.js.map +1 -1
  30. package/lib/commonjs/crypto/keyManager.js +902 -0
  31. package/lib/commonjs/crypto/keyManager.js.map +1 -0
  32. package/lib/commonjs/crypto/polyfill.js +14 -5
  33. package/lib/commonjs/crypto/polyfill.js.map +1 -1
  34. package/lib/commonjs/crypto/recoveryPhrase.js +152 -0
  35. package/lib/commonjs/crypto/recoveryPhrase.js.map +1 -0
  36. package/lib/commonjs/crypto/signatureService.js +289 -0
  37. package/lib/commonjs/crypto/signatureService.js.map +1 -0
  38. package/lib/commonjs/i18n/locales/en-US.json +1 -1
  39. package/lib/commonjs/index.js +40 -26
  40. package/lib/commonjs/index.js.map +1 -1
  41. package/lib/commonjs/models/interfaces.js +0 -15
  42. package/lib/commonjs/models/interfaces.js.map +1 -1
  43. package/lib/commonjs/ui/components/BottomSheetRouter.js +9 -1
  44. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  45. package/lib/commonjs/ui/components/GroupedItem.js +11 -1
  46. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  47. package/lib/commonjs/ui/components/Icon.js.map +1 -1
  48. package/lib/commonjs/ui/components/IconButton/utils.js.map +1 -1
  49. package/lib/commonjs/ui/components/OxyProvider.js +41 -11
  50. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  51. package/lib/commonjs/ui/components/SettingRow.js +17 -4
  52. package/lib/commonjs/ui/components/SettingRow.js.map +1 -1
  53. package/lib/commonjs/ui/components/TextField/Adornment/utils.js.map +1 -1
  54. package/lib/commonjs/ui/components/TextField/helpers.js.map +1 -1
  55. package/lib/commonjs/ui/components/TouchableRipple/utils.js.map +1 -1
  56. package/lib/commonjs/ui/components/Typography/AnimatedText.js.map +1 -1
  57. package/lib/commonjs/ui/components/feedback/FormInput.js +72 -0
  58. package/lib/commonjs/ui/components/feedback/FormInput.js.map +1 -0
  59. package/lib/commonjs/ui/components/feedback/ProgressIndicator.js +33 -0
  60. package/lib/commonjs/ui/components/feedback/ProgressIndicator.js.map +1 -0
  61. package/lib/commonjs/ui/components/feedback/constants.js +59 -0
  62. package/lib/commonjs/ui/components/feedback/constants.js.map +1 -0
  63. package/lib/commonjs/ui/components/feedback/feedbackStyles.js +262 -0
  64. package/lib/commonjs/ui/components/feedback/feedbackStyles.js.map +1 -0
  65. package/lib/commonjs/ui/components/feedback/index.js +54 -0
  66. package/lib/commonjs/ui/components/feedback/index.js.map +1 -0
  67. package/lib/commonjs/ui/components/feedback/types.js +6 -0
  68. package/lib/commonjs/ui/components/feedback/types.js.map +1 -0
  69. package/lib/commonjs/ui/components/feedback/useFeedbackForm.js +52 -0
  70. package/lib/commonjs/ui/components/feedback/useFeedbackForm.js.map +1 -0
  71. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js +282 -0
  72. package/lib/commonjs/ui/components/modals/DeleteAccountModal.js.map +1 -0
  73. package/lib/commonjs/ui/components/modals/index.js +14 -0
  74. package/lib/commonjs/ui/components/modals/index.js.map +1 -0
  75. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +309 -0
  76. package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js.map +1 -0
  77. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js +79 -0
  78. package/lib/commonjs/ui/components/payment/PaymentMethodStep.js.map +1 -0
  79. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js +108 -0
  80. package/lib/commonjs/ui/components/payment/PaymentReviewStep.js.map +1 -0
  81. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js +79 -0
  82. package/lib/commonjs/ui/components/payment/PaymentSuccessStep.js.map +1 -0
  83. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js +176 -0
  84. package/lib/commonjs/ui/components/payment/PaymentSummaryStep.js.map +1 -0
  85. package/lib/commonjs/ui/components/payment/constants.js +53 -0
  86. package/lib/commonjs/ui/components/payment/constants.js.map +1 -0
  87. package/lib/commonjs/ui/components/payment/index.js +80 -0
  88. package/lib/commonjs/ui/components/payment/index.js.map +1 -0
  89. package/lib/commonjs/ui/components/payment/paymentStyles.js +409 -0
  90. package/lib/commonjs/ui/components/payment/paymentStyles.js.map +1 -0
  91. package/lib/commonjs/ui/components/payment/types.js +6 -0
  92. package/lib/commonjs/ui/components/payment/types.js.map +1 -0
  93. package/lib/commonjs/ui/context/OxyContext.js +110 -199
  94. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  95. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +150 -19
  96. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  97. package/lib/commonjs/ui/context/hooks/useSessionManagement.js +279 -0
  98. package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +1 -0
  99. package/lib/commonjs/ui/hooks/index.js +26 -0
  100. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  101. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +79 -72
  102. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  103. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +38 -51
  104. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  105. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +3 -3
  106. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  107. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +18 -12
  108. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  109. package/lib/commonjs/ui/hooks/useAsyncAction.js +95 -0
  110. package/lib/commonjs/ui/hooks/useAsyncAction.js.map +1 -0
  111. package/lib/commonjs/ui/hooks/useProfileEditing.js +3 -5
  112. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  113. package/lib/commonjs/ui/hooks/useSessionManagement.js +4 -8
  114. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  115. package/lib/commonjs/ui/hooks/useSessionSocket.js +162 -315
  116. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  117. package/lib/commonjs/ui/hooks/useSettingToggle.js +126 -0
  118. package/lib/commonjs/ui/hooks/useSettingToggle.js.map +1 -0
  119. package/lib/commonjs/ui/hooks/useStorage.js +24 -58
  120. package/lib/commonjs/ui/hooks/useStorage.js.map +1 -1
  121. package/lib/commonjs/ui/index.js +50 -21
  122. package/lib/commonjs/ui/index.js.map +1 -1
  123. package/lib/commonjs/ui/navigation/routes.js +6 -1
  124. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  125. package/lib/commonjs/ui/screens/AccountCenterScreen.js +6 -4
  126. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  127. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +33 -30
  128. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  129. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +29 -24
  130. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  131. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +3 -3
  132. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  133. package/lib/commonjs/ui/screens/FAQScreen.js +315 -0
  134. package/lib/commonjs/ui/screens/FAQScreen.js.map +1 -0
  135. package/lib/commonjs/ui/screens/FeedbackScreen.js +73 -590
  136. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  137. package/lib/commonjs/ui/screens/HelpSupportScreen.js +8 -7
  138. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  139. package/lib/commonjs/ui/screens/OxyAuthScreen.js +134 -66
  140. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  141. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +67 -1395
  142. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  143. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +6 -13
  144. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  145. package/lib/commonjs/ui/screens/ProfileScreen.js +13 -5
  146. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  147. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +16 -10
  148. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  149. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +23 -11
  150. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  151. package/lib/commonjs/ui/stores/accountStore.js +2 -4
  152. package/lib/commonjs/ui/stores/accountStore.js.map +1 -1
  153. package/lib/commonjs/ui/stores/authStore.js +45 -32
  154. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  155. package/lib/commonjs/ui/styles/spacing.js +54 -2
  156. package/lib/commonjs/ui/styles/spacing.js.map +1 -1
  157. package/lib/commonjs/ui/utils/avatarUtils.js +37 -41
  158. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  159. package/lib/commonjs/ui/utils/storageHelpers.js.map +1 -1
  160. package/lib/commonjs/utils/errorUtils.js +13 -0
  161. package/lib/commonjs/utils/errorUtils.js.map +1 -1
  162. package/lib/commonjs/utils/validationUtils.js +15 -1
  163. package/lib/commonjs/utils/validationUtils.js.map +1 -1
  164. package/lib/module/core/CrossDomainAuth.js +271 -0
  165. package/lib/module/core/CrossDomainAuth.js.map +1 -0
  166. package/lib/module/core/HttpService.js +82 -15
  167. package/lib/module/core/HttpService.js.map +1 -1
  168. package/lib/module/core/OxyServices.base.js +11 -4
  169. package/lib/module/core/OxyServices.base.js.map +1 -1
  170. package/lib/module/core/OxyServices.js +4 -1
  171. package/lib/module/core/OxyServices.js.map +1 -1
  172. package/lib/module/core/index.js +6 -1
  173. package/lib/module/core/index.js.map +1 -1
  174. package/lib/module/core/mixins/OxyServices.assets.js +16 -3
  175. package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
  176. package/lib/module/core/mixins/OxyServices.auth.js +73 -32
  177. package/lib/module/core/mixins/OxyServices.auth.js.map +1 -1
  178. package/lib/module/core/mixins/OxyServices.features.js +369 -0
  179. package/lib/module/core/mixins/OxyServices.features.js.map +1 -0
  180. package/lib/module/core/mixins/OxyServices.fedcm.js +286 -0
  181. package/lib/module/core/mixins/OxyServices.fedcm.js.map +1 -0
  182. package/lib/module/core/mixins/OxyServices.popup.js +349 -0
  183. package/lib/module/core/mixins/OxyServices.popup.js.map +1 -0
  184. package/lib/module/core/mixins/OxyServices.redirect.js +375 -0
  185. package/lib/module/core/mixins/OxyServices.redirect.js.map +1 -0
  186. package/lib/module/core/mixins/OxyServices.user.js +35 -24
  187. package/lib/module/core/mixins/OxyServices.user.js.map +1 -1
  188. package/lib/module/core/mixins/index.js +16 -3
  189. package/lib/module/core/mixins/index.js.map +1 -1
  190. package/lib/module/crypto/index.js +8 -4
  191. package/lib/module/crypto/index.js.map +1 -1
  192. package/lib/module/crypto/keyManager.js +899 -0
  193. package/lib/module/crypto/keyManager.js.map +1 -0
  194. package/lib/module/crypto/polyfill.js +6 -5
  195. package/lib/module/crypto/polyfill.js.map +1 -1
  196. package/lib/module/crypto/recoveryPhrase.js +147 -0
  197. package/lib/module/crypto/recoveryPhrase.js.map +1 -0
  198. package/lib/module/crypto/signatureService.js +286 -0
  199. package/lib/module/crypto/signatureService.js.map +1 -0
  200. package/lib/module/i18n/locales/en-US.json +1 -1
  201. package/lib/module/index.js +6 -9
  202. package/lib/module/index.js.map +1 -1
  203. package/lib/module/models/interfaces.js +0 -15
  204. package/lib/module/models/interfaces.js.map +1 -1
  205. package/lib/module/ui/components/BottomSheetRouter.js +6 -2
  206. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  207. package/lib/module/ui/components/GroupedItem.js +11 -1
  208. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  209. package/lib/module/ui/components/Icon.js.map +1 -1
  210. package/lib/module/ui/components/IconButton/utils.js.map +1 -1
  211. package/lib/module/ui/components/OxyProvider.js +41 -11
  212. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  213. package/lib/module/ui/components/SettingRow.js +17 -4
  214. package/lib/module/ui/components/SettingRow.js.map +1 -1
  215. package/lib/module/ui/components/TextField/Adornment/utils.js.map +1 -1
  216. package/lib/module/ui/components/TextField/helpers.js.map +1 -1
  217. package/lib/module/ui/components/TouchableRipple/utils.js.map +1 -1
  218. package/lib/module/ui/components/Typography/AnimatedText.js.map +1 -1
  219. package/lib/module/ui/components/feedback/FormInput.js +67 -0
  220. package/lib/module/ui/components/feedback/FormInput.js.map +1 -0
  221. package/lib/module/ui/components/feedback/ProgressIndicator.js +28 -0
  222. package/lib/module/ui/components/feedback/ProgressIndicator.js.map +1 -0
  223. package/lib/module/ui/components/feedback/constants.js +55 -0
  224. package/lib/module/ui/components/feedback/constants.js.map +1 -0
  225. package/lib/module/ui/components/feedback/feedbackStyles.js +257 -0
  226. package/lib/module/ui/components/feedback/feedbackStyles.js.map +1 -0
  227. package/lib/module/ui/components/feedback/index.js +8 -0
  228. package/lib/module/ui/components/feedback/index.js.map +1 -0
  229. package/lib/module/ui/components/feedback/types.js +4 -0
  230. package/lib/module/ui/components/feedback/types.js.map +1 -0
  231. package/lib/module/ui/components/feedback/useFeedbackForm.js +47 -0
  232. package/lib/module/ui/components/feedback/useFeedbackForm.js.map +1 -0
  233. package/lib/module/ui/components/modals/DeleteAccountModal.js +276 -0
  234. package/lib/module/ui/components/modals/DeleteAccountModal.js.map +1 -0
  235. package/lib/module/ui/components/modals/index.js +4 -0
  236. package/lib/module/ui/components/modals/index.js.map +1 -0
  237. package/lib/module/ui/components/payment/PaymentDetailsStep.js +303 -0
  238. package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -0
  239. package/lib/module/ui/components/payment/PaymentMethodStep.js +73 -0
  240. package/lib/module/ui/components/payment/PaymentMethodStep.js.map +1 -0
  241. package/lib/module/ui/components/payment/PaymentReviewStep.js +102 -0
  242. package/lib/module/ui/components/payment/PaymentReviewStep.js.map +1 -0
  243. package/lib/module/ui/components/payment/PaymentSuccessStep.js +73 -0
  244. package/lib/module/ui/components/payment/PaymentSuccessStep.js.map +1 -0
  245. package/lib/module/ui/components/payment/PaymentSummaryStep.js +170 -0
  246. package/lib/module/ui/components/payment/PaymentSummaryStep.js.map +1 -0
  247. package/lib/module/ui/components/payment/constants.js +47 -0
  248. package/lib/module/ui/components/payment/constants.js.map +1 -0
  249. package/lib/module/ui/components/payment/index.js +10 -0
  250. package/lib/module/ui/components/payment/index.js.map +1 -0
  251. package/lib/module/ui/components/payment/paymentStyles.js +404 -0
  252. package/lib/module/ui/components/payment/paymentStyles.js.map +1 -0
  253. package/lib/module/ui/components/payment/types.js +4 -0
  254. package/lib/module/ui/components/payment/types.js.map +1 -0
  255. package/lib/module/ui/context/OxyContext.js +112 -191
  256. package/lib/module/ui/context/OxyContext.js.map +1 -1
  257. package/lib/module/ui/context/hooks/useAuthOperations.js +150 -19
  258. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  259. package/lib/module/ui/context/hooks/useSessionManagement.js +274 -0
  260. package/lib/module/ui/context/hooks/useSessionManagement.js.map +1 -0
  261. package/lib/module/ui/hooks/index.js +2 -0
  262. package/lib/module/ui/hooks/index.js.map +1 -1
  263. package/lib/module/ui/hooks/mutations/useAccountMutations.js +80 -72
  264. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  265. package/lib/module/ui/hooks/queries/useAccountQueries.js +31 -44
  266. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  267. package/lib/module/ui/hooks/queries/useSecurityQueries.js +1 -1
  268. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  269. package/lib/module/ui/hooks/queries/useServicesQueries.js +13 -7
  270. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  271. package/lib/module/ui/hooks/useAsyncAction.js +89 -0
  272. package/lib/module/ui/hooks/useAsyncAction.js.map +1 -0
  273. package/lib/module/ui/hooks/useProfileEditing.js +3 -5
  274. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  275. package/lib/module/ui/hooks/useSessionManagement.js +4 -8
  276. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  277. package/lib/module/ui/hooks/useSessionSocket.js +162 -315
  278. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  279. package/lib/module/ui/hooks/useSettingToggle.js +120 -0
  280. package/lib/module/ui/hooks/useSettingToggle.js.map +1 -0
  281. package/lib/module/ui/hooks/useStorage.js +25 -59
  282. package/lib/module/ui/hooks/useStorage.js.map +1 -1
  283. package/lib/module/ui/index.js +15 -10
  284. package/lib/module/ui/index.js.map +1 -1
  285. package/lib/module/ui/navigation/routes.js +6 -1
  286. package/lib/module/ui/navigation/routes.js.map +1 -1
  287. package/lib/module/ui/screens/AccountCenterScreen.js +6 -4
  288. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  289. package/lib/module/ui/screens/AccountOverviewScreen.js +33 -30
  290. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  291. package/lib/module/ui/screens/AccountSettingsScreen.js +29 -24
  292. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  293. package/lib/module/ui/screens/AccountSwitcherScreen.js +3 -3
  294. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  295. package/lib/module/ui/screens/FAQScreen.js +310 -0
  296. package/lib/module/ui/screens/FAQScreen.js.map +1 -0
  297. package/lib/module/ui/screens/FeedbackScreen.js +64 -581
  298. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  299. package/lib/module/ui/screens/HelpSupportScreen.js +8 -7
  300. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  301. package/lib/module/ui/screens/OxyAuthScreen.js +135 -68
  302. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  303. package/lib/module/ui/screens/PaymentGatewayScreen.js +67 -1397
  304. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  305. package/lib/module/ui/screens/PrivacySettingsScreen.js +6 -13
  306. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  307. package/lib/module/ui/screens/ProfileScreen.js +13 -5
  308. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  309. package/lib/module/ui/screens/SavesCollectionsScreen.js +16 -10
  310. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  311. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +23 -11
  312. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  313. package/lib/module/ui/stores/accountStore.js +2 -4
  314. package/lib/module/ui/stores/accountStore.js.map +1 -1
  315. package/lib/module/ui/stores/authStore.js +45 -32
  316. package/lib/module/ui/stores/authStore.js.map +1 -1
  317. package/lib/module/ui/styles/spacing.js +6 -2
  318. package/lib/module/ui/styles/spacing.js.map +1 -1
  319. package/lib/module/ui/utils/avatarUtils.js +37 -40
  320. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  321. package/lib/module/ui/utils/storageHelpers.js.map +1 -1
  322. package/lib/module/utils/errorUtils.js +7 -0
  323. package/lib/module/utils/errorUtils.js.map +1 -1
  324. package/lib/module/utils/validationUtils.js +13 -0
  325. package/lib/module/utils/validationUtils.js.map +1 -1
  326. package/lib/typescript/core/CrossDomainAuth.d.ts +161 -0
  327. package/lib/typescript/core/CrossDomainAuth.d.ts.map +1 -0
  328. package/lib/typescript/core/HttpService.d.ts +1 -1
  329. package/lib/typescript/core/HttpService.d.ts.map +1 -1
  330. package/lib/typescript/core/OxyServices.base.d.ts +0 -6
  331. package/lib/typescript/core/OxyServices.base.d.ts.map +1 -1
  332. package/lib/typescript/core/OxyServices.d.ts +5 -36
  333. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  334. package/lib/typescript/core/index.d.ts +4 -0
  335. package/lib/typescript/core/index.d.ts.map +1 -1
  336. package/lib/typescript/core/mixins/OxyServices.analytics.d.ts.map +1 -1
  337. package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
  338. package/lib/typescript/core/mixins/OxyServices.auth.d.ts +40 -20
  339. package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
  340. package/lib/typescript/core/mixins/OxyServices.developer.d.ts.map +1 -1
  341. package/lib/typescript/core/mixins/OxyServices.devices.d.ts.map +1 -1
  342. package/lib/typescript/core/mixins/OxyServices.features.d.ts +229 -0
  343. package/lib/typescript/core/mixins/OxyServices.features.d.ts.map +1 -0
  344. package/lib/typescript/core/mixins/OxyServices.fedcm.d.ts +195 -0
  345. package/lib/typescript/core/mixins/OxyServices.fedcm.d.ts.map +1 -0
  346. package/lib/typescript/core/mixins/OxyServices.karma.d.ts.map +1 -1
  347. package/lib/typescript/core/mixins/OxyServices.language.d.ts.map +1 -1
  348. package/lib/typescript/core/mixins/OxyServices.location.d.ts.map +1 -1
  349. package/lib/typescript/core/mixins/OxyServices.payment.d.ts.map +1 -1
  350. package/lib/typescript/core/mixins/OxyServices.popup.d.ts +206 -0
  351. package/lib/typescript/core/mixins/OxyServices.popup.d.ts.map +1 -0
  352. package/lib/typescript/core/mixins/OxyServices.privacy.d.ts.map +1 -1
  353. package/lib/typescript/core/mixins/OxyServices.redirect.d.ts +246 -0
  354. package/lib/typescript/core/mixins/OxyServices.redirect.d.ts.map +1 -0
  355. package/lib/typescript/core/mixins/OxyServices.security.d.ts.map +1 -1
  356. package/lib/typescript/core/mixins/OxyServices.user.d.ts +6 -4
  357. package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
  358. package/lib/typescript/core/mixins/OxyServices.utility.d.ts.map +1 -1
  359. package/lib/typescript/core/mixins/index.d.ts +291 -9
  360. package/lib/typescript/core/mixins/index.d.ts.map +1 -1
  361. package/lib/typescript/crypto/index.d.ts +6 -3
  362. package/lib/typescript/crypto/index.d.ts.map +1 -1
  363. package/lib/typescript/crypto/keyManager.d.ts +190 -0
  364. package/lib/typescript/crypto/keyManager.d.ts.map +1 -0
  365. package/lib/typescript/crypto/polyfill.d.ts +4 -3
  366. package/lib/typescript/crypto/polyfill.d.ts.map +1 -1
  367. package/lib/typescript/crypto/recoveryPhrase.d.ts +59 -0
  368. package/lib/typescript/crypto/recoveryPhrase.d.ts.map +1 -0
  369. package/lib/typescript/crypto/signatureService.d.ts +87 -0
  370. package/lib/typescript/crypto/signatureService.d.ts.map +1 -0
  371. package/lib/typescript/index.d.ts +5 -6
  372. package/lib/typescript/index.d.ts.map +1 -1
  373. package/lib/typescript/models/interfaces.d.ts +2 -14
  374. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  375. package/lib/typescript/models/session.d.ts +0 -9
  376. package/lib/typescript/models/session.d.ts.map +1 -1
  377. package/lib/typescript/types/bip39.d.ts +32 -0
  378. package/lib/typescript/ui/components/BottomSheetRouter.d.ts +5 -0
  379. package/lib/typescript/ui/components/BottomSheetRouter.d.ts.map +1 -1
  380. package/lib/typescript/ui/components/GroupedItem.d.ts +5 -1
  381. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  382. package/lib/typescript/ui/components/IconButton/utils.d.ts +1 -1
  383. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  384. package/lib/typescript/ui/components/SettingRow.d.ts +6 -0
  385. package/lib/typescript/ui/components/SettingRow.d.ts.map +1 -1
  386. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts +2 -2
  387. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts +1 -1
  388. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts.map +1 -1
  389. package/lib/typescript/ui/components/TextField/helpers.d.ts +8 -8
  390. package/lib/typescript/ui/components/TextField/types.d.ts +1 -0
  391. package/lib/typescript/ui/components/TextField/types.d.ts.map +1 -1
  392. package/lib/typescript/ui/components/feedback/FormInput.d.ts +20 -0
  393. package/lib/typescript/ui/components/feedback/FormInput.d.ts.map +1 -0
  394. package/lib/typescript/ui/components/feedback/ProgressIndicator.d.ts +11 -0
  395. package/lib/typescript/ui/components/feedback/ProgressIndicator.d.ts.map +1 -0
  396. package/lib/typescript/ui/components/feedback/constants.d.ts +5 -0
  397. package/lib/typescript/ui/components/feedback/constants.d.ts.map +1 -0
  398. package/lib/typescript/ui/components/feedback/feedbackStyles.d.ts +280 -0
  399. package/lib/typescript/ui/components/feedback/feedbackStyles.d.ts.map +1 -0
  400. package/lib/typescript/ui/components/feedback/index.d.ts +7 -0
  401. package/lib/typescript/ui/components/feedback/index.d.ts.map +1 -0
  402. package/lib/typescript/ui/components/feedback/types.d.ts +46 -0
  403. package/lib/typescript/ui/components/feedback/types.d.ts.map +1 -0
  404. package/lib/typescript/ui/components/feedback/useFeedbackForm.d.ts +9 -0
  405. package/lib/typescript/ui/components/feedback/useFeedbackForm.d.ts.map +1 -0
  406. package/lib/typescript/ui/components/modals/DeleteAccountModal.d.ts +19 -0
  407. package/lib/typescript/ui/components/modals/DeleteAccountModal.d.ts.map +1 -0
  408. package/lib/typescript/ui/components/modals/index.d.ts +2 -0
  409. package/lib/typescript/ui/components/modals/index.d.ts.map +1 -0
  410. package/lib/typescript/ui/components/payment/PaymentDetailsStep.d.ts +21 -0
  411. package/lib/typescript/ui/components/payment/PaymentDetailsStep.d.ts.map +1 -0
  412. package/lib/typescript/ui/components/payment/PaymentMethodStep.d.ts +14 -0
  413. package/lib/typescript/ui/components/payment/PaymentMethodStep.d.ts.map +1 -0
  414. package/lib/typescript/ui/components/payment/PaymentReviewStep.d.ts +16 -0
  415. package/lib/typescript/ui/components/payment/PaymentReviewStep.d.ts.map +1 -0
  416. package/lib/typescript/ui/components/payment/PaymentSuccessStep.d.ts +10 -0
  417. package/lib/typescript/ui/components/payment/PaymentSuccessStep.d.ts.map +1 -0
  418. package/lib/typescript/ui/components/payment/PaymentSummaryStep.d.ts +15 -0
  419. package/lib/typescript/ui/components/payment/PaymentSummaryStep.d.ts.map +1 -0
  420. package/lib/typescript/ui/components/payment/constants.d.ts +7 -0
  421. package/lib/typescript/ui/components/payment/constants.d.ts.map +1 -0
  422. package/lib/typescript/ui/components/payment/index.d.ts +9 -0
  423. package/lib/typescript/ui/components/payment/index.d.ts.map +1 -0
  424. package/lib/typescript/ui/components/payment/paymentStyles.d.ts +396 -0
  425. package/lib/typescript/ui/components/payment/paymentStyles.d.ts.map +1 -0
  426. package/lib/typescript/ui/components/payment/types.d.ts +40 -0
  427. package/lib/typescript/ui/components/payment/types.d.ts.map +1 -0
  428. package/lib/typescript/ui/components/types.d.ts +4 -0
  429. package/lib/typescript/ui/components/types.d.ts.map +1 -1
  430. package/lib/typescript/ui/context/OxyContext.d.ts +57 -3
  431. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  432. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +10 -3
  433. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  434. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts +41 -0
  435. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts.map +1 -0
  436. package/lib/typescript/ui/hooks/index.d.ts +2 -0
  437. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  438. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  439. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  440. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  441. package/lib/typescript/ui/hooks/useAsyncAction.d.ts +51 -0
  442. package/lib/typescript/ui/hooks/useAsyncAction.d.ts.map +1 -0
  443. package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -1
  444. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -1
  445. package/lib/typescript/ui/hooks/useSessionSocket.d.ts +1 -2
  446. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  447. package/lib/typescript/ui/hooks/useSettingToggle.d.ts +55 -0
  448. package/lib/typescript/ui/hooks/useSettingToggle.d.ts.map +1 -0
  449. package/lib/typescript/ui/hooks/useStorage.d.ts +3 -9
  450. package/lib/typescript/ui/hooks/useStorage.d.ts.map +1 -1
  451. package/lib/typescript/ui/index.d.ts +6 -2
  452. package/lib/typescript/ui/index.d.ts.map +1 -1
  453. package/lib/typescript/ui/navigation/routes.d.ts +1 -1
  454. package/lib/typescript/ui/navigation/routes.d.ts.map +1 -1
  455. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  456. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  457. package/lib/typescript/ui/screens/FAQScreen.d.ts +5 -0
  458. package/lib/typescript/ui/screens/FAQScreen.d.ts.map +1 -0
  459. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  460. package/lib/typescript/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  461. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts +1 -1
  462. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  463. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +3 -15
  464. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  465. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  466. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
  467. package/lib/typescript/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  468. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  469. package/lib/typescript/ui/stores/accountStore.d.ts.map +1 -1
  470. package/lib/typescript/ui/stores/authStore.d.ts +8 -7
  471. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  472. package/lib/typescript/ui/styles/spacing.d.ts +5 -0
  473. package/lib/typescript/ui/styles/spacing.d.ts.map +1 -1
  474. package/lib/typescript/ui/types/navigation.d.ts +2 -1
  475. package/lib/typescript/ui/types/navigation.d.ts.map +1 -1
  476. package/lib/typescript/ui/utils/avatarUtils.d.ts +2 -13
  477. package/lib/typescript/ui/utils/avatarUtils.d.ts.map +1 -1
  478. package/lib/typescript/ui/utils/storageHelpers.d.ts +0 -3
  479. package/lib/typescript/ui/utils/storageHelpers.d.ts.map +1 -1
  480. package/lib/typescript/utils/errorUtils.d.ts +6 -0
  481. package/lib/typescript/utils/errorUtils.d.ts.map +1 -1
  482. package/lib/typescript/utils/validationUtils.d.ts +8 -0
  483. package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
  484. package/package.json +8 -7
  485. package/src/core/CrossDomainAuth.ts +307 -0
  486. package/src/core/HttpService.ts +99 -16
  487. package/src/core/OxyServices.base.ts +20 -3
  488. package/src/core/OxyServices.ts +7 -3
  489. package/src/core/index.ts +9 -1
  490. package/src/core/mixins/OxyServices.assets.ts +14 -3
  491. package/src/core/mixins/OxyServices.auth.ts +105 -36
  492. package/src/core/mixins/OxyServices.features.ts +428 -0
  493. package/src/core/mixins/OxyServices.fedcm.ts +315 -0
  494. package/src/core/mixins/OxyServices.popup.ts +402 -0
  495. package/src/core/mixins/OxyServices.redirect.ts +397 -0
  496. package/src/core/mixins/OxyServices.user.ts +39 -24
  497. package/src/core/mixins/index.ts +33 -14
  498. package/src/crypto/index.ts +16 -5
  499. package/src/crypto/keyManager.ts +966 -0
  500. package/src/crypto/polyfill.ts +6 -5
  501. package/src/crypto/recoveryPhrase.ts +166 -0
  502. package/src/crypto/signatureService.ts +323 -0
  503. package/src/i18n/locales/en-US.json +1 -1
  504. package/src/index.ts +19 -15
  505. package/src/models/interfaces.ts +4 -16
  506. package/src/models/session.ts +2 -11
  507. package/src/types/bip39.d.ts +32 -0
  508. package/src/ui/components/BottomSheetRouter.tsx +6 -1
  509. package/src/ui/components/GroupedItem.tsx +19 -1
  510. package/src/ui/components/Icon.tsx +1 -1
  511. package/src/ui/components/IconButton/utils.ts +1 -1
  512. package/src/ui/components/OxyProvider.tsx +44 -12
  513. package/src/ui/components/SettingRow.tsx +26 -4
  514. package/src/ui/components/TextField/Addons/Outline.tsx +2 -2
  515. package/src/ui/components/TextField/Adornment/utils.ts +2 -2
  516. package/src/ui/components/TextField/helpers.tsx +10 -10
  517. package/src/ui/components/TextField/types.tsx +1 -1
  518. package/src/ui/components/TouchableRipple/utils.ts +2 -2
  519. package/src/ui/components/Typography/AnimatedText.tsx +2 -2
  520. package/src/ui/components/feedback/FormInput.tsx +84 -0
  521. package/src/ui/components/feedback/ProgressIndicator.tsx +35 -0
  522. package/src/ui/components/feedback/constants.ts +22 -0
  523. package/src/ui/components/feedback/feedbackStyles.ts +247 -0
  524. package/src/ui/components/feedback/index.ts +6 -0
  525. package/src/ui/components/feedback/types.ts +52 -0
  526. package/src/ui/components/feedback/useFeedbackForm.ts +44 -0
  527. package/src/ui/components/modals/DeleteAccountModal.tsx +294 -0
  528. package/src/ui/components/modals/index.ts +1 -0
  529. package/src/ui/components/payment/PaymentDetailsStep.tsx +222 -0
  530. package/src/ui/components/payment/PaymentMethodStep.tsx +89 -0
  531. package/src/ui/components/payment/PaymentReviewStep.tsx +126 -0
  532. package/src/ui/components/payment/PaymentSuccessStep.tsx +71 -0
  533. package/src/ui/components/payment/PaymentSummaryStep.tsx +159 -0
  534. package/src/ui/components/payment/constants.ts +39 -0
  535. package/src/ui/components/payment/index.ts +9 -0
  536. package/src/ui/components/payment/paymentStyles.ts +397 -0
  537. package/src/ui/components/payment/types.ts +45 -0
  538. package/src/ui/components/types.tsx +6 -0
  539. package/src/ui/context/OxyContext.tsx +173 -195
  540. package/src/ui/context/hooks/useAuthOperations.ts +177 -36
  541. package/src/ui/context/hooks/useSessionManagement.ts +399 -0
  542. package/src/ui/hooks/index.ts +3 -1
  543. package/src/ui/hooks/mutations/useAccountMutations.ts +83 -76
  544. package/src/ui/hooks/queries/useAccountQueries.ts +29 -35
  545. package/src/ui/hooks/queries/useSecurityQueries.ts +1 -1
  546. package/src/ui/hooks/queries/useServicesQueries.ts +14 -6
  547. package/src/ui/hooks/useAsyncAction.ts +129 -0
  548. package/src/ui/hooks/useProfileEditing.ts +3 -3
  549. package/src/ui/hooks/useSessionManagement.ts +5 -10
  550. package/src/ui/hooks/useSessionSocket.ts +46 -175
  551. package/src/ui/hooks/useSettingToggle.ts +147 -0
  552. package/src/ui/hooks/useStorage.ts +24 -76
  553. package/src/ui/index.ts +22 -13
  554. package/src/ui/navigation/routes.ts +8 -2
  555. package/src/ui/screens/AccountCenterScreen.tsx +4 -4
  556. package/src/ui/screens/AccountOverviewScreen.tsx +36 -38
  557. package/src/ui/screens/AccountSettingsScreen.tsx +34 -37
  558. package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
  559. package/src/ui/screens/FAQScreen.tsx +332 -0
  560. package/src/ui/screens/FeedbackScreen.tsx +91 -626
  561. package/src/ui/screens/HelpSupportScreen.tsx +7 -5
  562. package/src/ui/screens/OxyAuthScreen.tsx +138 -64
  563. package/src/ui/screens/PaymentGatewayScreen.tsx +96 -1275
  564. package/src/ui/screens/PrivacySettingsScreen.tsx +6 -12
  565. package/src/ui/screens/ProfileScreen.tsx +11 -6
  566. package/src/ui/screens/SavesCollectionsScreen.tsx +19 -10
  567. package/src/ui/screens/karma/KarmaCenterScreen.tsx +10 -10
  568. package/src/ui/stores/accountStore.ts +1 -11
  569. package/src/ui/stores/authStore.ts +43 -44
  570. package/src/ui/styles/spacing.ts +15 -2
  571. package/src/ui/types/navigation.ts +2 -2
  572. package/src/ui/utils/avatarUtils.ts +39 -46
  573. package/src/ui/utils/storageHelpers.ts +0 -4
  574. package/src/utils/__tests__/validationUtils.test.ts +16 -1
  575. package/src/utils/errorUtils.ts +8 -1
  576. package/src/utils/validationUtils.ts +12 -0
  577. package/lib/commonjs/core/services/SessionService.js +0 -163
  578. package/lib/commonjs/core/services/SessionService.js.map +0 -1
  579. package/lib/commonjs/core/services/TokenService.js +0 -220
  580. package/lib/commonjs/core/services/TokenService.js.map +0 -1
  581. package/lib/commonjs/crypto/types.js +0 -2
  582. package/lib/commonjs/crypto/types.js.map +0 -1
  583. package/lib/commonjs/ui/context/OxyContextBase.js +0 -21
  584. package/lib/commonjs/ui/context/OxyContextBase.js.map +0 -1
  585. package/lib/commonjs/ui/context/hooks/useStorage.js +0 -79
  586. package/lib/commonjs/ui/context/hooks/useStorage.js.map +0 -1
  587. package/lib/commonjs/ui/hooks/useAvatarPicker.js +0 -56
  588. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +0 -1
  589. package/lib/module/core/services/SessionService.js +0 -159
  590. package/lib/module/core/services/SessionService.js.map +0 -1
  591. package/lib/module/core/services/TokenService.js +0 -217
  592. package/lib/module/core/services/TokenService.js.map +0 -1
  593. package/lib/module/crypto/types.js +0 -2
  594. package/lib/module/crypto/types.js.map +0 -1
  595. package/lib/module/ui/context/OxyContextBase.js +0 -16
  596. package/lib/module/ui/context/OxyContextBase.js.map +0 -1
  597. package/lib/module/ui/context/hooks/useStorage.js +0 -74
  598. package/lib/module/ui/context/hooks/useStorage.js.map +0 -1
  599. package/lib/module/ui/hooks/useAvatarPicker.js +0 -50
  600. package/lib/module/ui/hooks/useAvatarPicker.js.map +0 -1
  601. package/lib/typescript/core/services/SessionService.d.ts +0 -78
  602. package/lib/typescript/core/services/SessionService.d.ts.map +0 -1
  603. package/lib/typescript/core/services/TokenService.d.ts +0 -72
  604. package/lib/typescript/core/services/TokenService.d.ts.map +0 -1
  605. package/lib/typescript/crypto/types.d.ts +0 -22
  606. package/lib/typescript/crypto/types.d.ts.map +0 -1
  607. package/lib/typescript/ui/context/OxyContextBase.d.ts +0 -63
  608. package/lib/typescript/ui/context/OxyContextBase.d.ts.map +0 -1
  609. package/lib/typescript/ui/context/hooks/useStorage.d.ts +0 -22
  610. package/lib/typescript/ui/context/hooks/useStorage.d.ts.map +0 -1
  611. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts +0 -19
  612. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts.map +0 -1
  613. package/src/core/services/SessionService.ts +0 -173
  614. package/src/core/services/TokenService.ts +0 -237
  615. package/src/crypto/types.ts +0 -23
  616. package/src/ui/context/OxyContextBase.tsx +0 -78
  617. package/src/ui/context/hooks/useStorage.ts +0 -104
  618. package/src/ui/hooks/useAvatarPicker.ts +0 -61
@@ -0,0 +1,397 @@
1
+ import type { OxyServicesBase } from '../OxyServices.base';
2
+ import { OxyAuthenticationError } from '../OxyServices.errors';
3
+ import type { SessionLoginResponse } from '../../models/session';
4
+
5
+ export interface RedirectAuthOptions {
6
+ redirectUri?: string;
7
+ mode?: 'login' | 'signup';
8
+ preserveUrl?: boolean;
9
+ }
10
+
11
+ /**
12
+ * Redirect-based Cross-Domain Authentication Mixin
13
+ *
14
+ * Implements traditional OAuth2 redirect flow as a fallback when popup or
15
+ * FedCM are not available or fail (e.g., mobile browsers, popup blockers).
16
+ *
17
+ * Flow:
18
+ * 1. Save current URL
19
+ * 2. Redirect to auth.oxy.so/login
20
+ * 3. User signs in
21
+ * 4. Redirect back with token in URL
22
+ * 5. Extract token, restore session, clean URL
23
+ *
24
+ * Features:
25
+ * - Works on all browsers (including old mobile browsers)
26
+ * - Automatic URL cleanup after auth
27
+ * - State preservation option
28
+ * - CSRF protection via state parameter
29
+ *
30
+ * Trade-offs:
31
+ * - Loses JavaScript app state (full page navigation)
32
+ * - Visible redirect (user sees navigation)
33
+ * - Slower perceived performance
34
+ */
35
+ export function OxyServicesRedirectAuthMixin<T extends typeof OxyServicesBase>(Base: T) {
36
+ return class extends Base {
37
+ constructor(...args: any[]) {
38
+ super(...(args as [any]));
39
+ }
40
+ public static readonly AUTH_URL = 'https://auth.oxy.so';
41
+ public static readonly TOKEN_STORAGE_KEY = 'oxy_access_token';
42
+ public static readonly SESSION_STORAGE_KEY = 'oxy_session_id';
43
+ public static readonly STATE_STORAGE_KEY = 'oxy_auth_state';
44
+ public static readonly PRE_AUTH_URL_KEY = 'oxy_pre_auth_url';
45
+ public static readonly NONCE_STORAGE_KEY = 'oxy_auth_nonce';
46
+
47
+ /**
48
+ * Sign in using full page redirect
49
+ *
50
+ * Redirects the user to auth.oxy.so for authentication. After successful
51
+ * sign-in, the user will be redirected back to the current page (or custom
52
+ * redirect URI) with authentication tokens in the URL.
53
+ *
54
+ * Call handleAuthCallback() on app startup to complete the flow.
55
+ *
56
+ * @param options - Redirect configuration options
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * // Initiate sign-in
61
+ * const handleSignIn = () => {
62
+ * oxyServices.signInWithRedirect();
63
+ * };
64
+ *
65
+ * // Handle callback on app startup
66
+ * useEffect(() => {
67
+ * const session = oxyServices.handleAuthCallback();
68
+ * if (session) {
69
+ * setUser(session.user);
70
+ * }
71
+ * }, []);
72
+ * ```
73
+ */
74
+ signInWithRedirect(options: RedirectAuthOptions = {}): void {
75
+ if (typeof window === 'undefined') {
76
+ throw new OxyAuthenticationError('Redirect authentication requires browser environment');
77
+ }
78
+
79
+ const redirectUri = options.redirectUri || window.location.href;
80
+ const mode = options.mode || 'login';
81
+ const state = this.generateState();
82
+ const nonce = this.generateNonce();
83
+
84
+ // Store state for CSRF protection
85
+ this.storeAuthState(state, nonce);
86
+
87
+ // Save current URL to restore after auth (optional)
88
+ if (options.preserveUrl !== false) {
89
+ this.savePreAuthUrl(window.location.href);
90
+ }
91
+
92
+ const authUrl = this.buildAuthUrl({
93
+ mode,
94
+ redirectUri,
95
+ state,
96
+ nonce,
97
+ clientId: window.location.origin,
98
+ });
99
+
100
+ // Perform redirect
101
+ window.location.href = authUrl;
102
+ }
103
+
104
+ /**
105
+ * Sign up using full page redirect
106
+ *
107
+ * Same as signInWithRedirect but opens the signup page by default.
108
+ */
109
+ signUpWithRedirect(options: RedirectAuthOptions = {}): void {
110
+ this.signInWithRedirect({ ...options, mode: 'signup' });
111
+ }
112
+
113
+ /**
114
+ * Handle authentication callback
115
+ *
116
+ * Call this on app startup to check if the current page load is a
117
+ * redirect back from the authentication server. If it is, this method
118
+ * will extract the tokens, store them, and clean up the URL.
119
+ *
120
+ * @returns Session data if this is a callback, null otherwise
121
+ * @throws {OxyAuthenticationError} If state validation fails (CSRF attack)
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * // In your app's root component or startup logic
126
+ * useEffect(() => {
127
+ * try {
128
+ * const session = oxyServices.handleAuthCallback();
129
+ * if (session) {
130
+ * console.log('Logged in:', session.user);
131
+ * setUser(session.user);
132
+ * } else {
133
+ * // Not a callback, check for existing session
134
+ * const restored = oxyServices.restoreSession();
135
+ * if (!restored) {
136
+ * // No session, show login button
137
+ * }
138
+ * }
139
+ * } catch (error) {
140
+ * console.error('Auth callback failed:', error);
141
+ * }
142
+ * }, []);
143
+ * ```
144
+ */
145
+ handleAuthCallback(): SessionLoginResponse | null {
146
+ if (typeof window === 'undefined') {
147
+ return null;
148
+ }
149
+
150
+ const url = new URL(window.location.href);
151
+ const accessToken = url.searchParams.get('access_token');
152
+ const sessionId = url.searchParams.get('session_id');
153
+ const expiresAt = url.searchParams.get('expires_at');
154
+ const state = url.searchParams.get('state');
155
+ const error = url.searchParams.get('error');
156
+ const errorDescription = url.searchParams.get('error_description');
157
+
158
+ // Check if this is an error callback
159
+ if (error) {
160
+ this.clearAuthState();
161
+ throw new OxyAuthenticationError(errorDescription || error);
162
+ }
163
+
164
+ // Check if this is an auth callback
165
+ if (!accessToken || !sessionId) {
166
+ return null; // Not a callback
167
+ }
168
+
169
+ // Verify state to prevent CSRF attacks
170
+ const savedState = this.getStoredState();
171
+ if (!savedState || state !== savedState) {
172
+ this.clearAuthState();
173
+ throw new OxyAuthenticationError('Invalid state parameter. Possible CSRF attack.');
174
+ }
175
+
176
+ // Store tokens
177
+ this.storeTokens(accessToken, sessionId);
178
+ this.httpService.setTokens(accessToken);
179
+
180
+ // Build session response (minimal - we'll fetch full user data separately)
181
+ const session: SessionLoginResponse = {
182
+ sessionId,
183
+ deviceId: '', // Not available in redirect flow
184
+ expiresAt: expiresAt || new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(),
185
+ user: {} as any, // Will be fetched separately
186
+ };
187
+
188
+ // Clean up URL (remove auth parameters)
189
+ this.cleanAuthCallbackUrl(url);
190
+
191
+ // Clean up storage
192
+ this.clearAuthState();
193
+
194
+ return session;
195
+ }
196
+
197
+ /**
198
+ * Restore session from storage
199
+ *
200
+ * Attempts to restore a previously authenticated session from localStorage.
201
+ * Call this on app startup if handleAuthCallback() returns null.
202
+ *
203
+ * @returns True if session was restored, false otherwise
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * useEffect(() => {
208
+ * const session = oxyServices.handleAuthCallback();
209
+ * if (!session) {
210
+ * const restored = oxyServices.restoreSession();
211
+ * if (!restored) {
212
+ * // No session, user needs to sign in
213
+ * setShowLogin(true);
214
+ * }
215
+ * }
216
+ * }, []);
217
+ * ```
218
+ */
219
+ restoreSession(): boolean {
220
+ if (typeof window === 'undefined') {
221
+ return false;
222
+ }
223
+
224
+ const token = localStorage.getItem((this.constructor as any).TOKEN_STORAGE_KEY);
225
+ const sessionId = localStorage.getItem((this.constructor as any).SESSION_STORAGE_KEY);
226
+
227
+ if (token && sessionId) {
228
+ this.httpService.setTokens(token);
229
+ return true;
230
+ }
231
+
232
+ return false;
233
+ }
234
+
235
+ /**
236
+ * Clear stored session
237
+ *
238
+ * Removes all authentication data from storage. Call this on logout.
239
+ */
240
+ clearStoredSession(): void {
241
+ if (typeof window === 'undefined') {
242
+ return;
243
+ }
244
+
245
+ localStorage.removeItem((this.constructor as any).TOKEN_STORAGE_KEY);
246
+ localStorage.removeItem((this.constructor as any).SESSION_STORAGE_KEY);
247
+ this.httpService.clearTokens();
248
+ }
249
+
250
+ /**
251
+ * Get stored session ID
252
+ */
253
+ getStoredSessionId(): string | null {
254
+ if (typeof window === 'undefined') {
255
+ return null;
256
+ }
257
+
258
+ return localStorage.getItem((this.constructor as any).SESSION_STORAGE_KEY);
259
+ }
260
+
261
+ /**
262
+ * Build authentication URL with query parameters
263
+ *
264
+ * @private
265
+ */
266
+ public buildAuthUrl(params: {
267
+ mode: string;
268
+ redirectUri: string;
269
+ state: string;
270
+ nonce: string;
271
+ clientId: string;
272
+ }): string {
273
+ const url = new URL(`${(this.constructor as any).AUTH_URL}/${params.mode}`);
274
+ url.searchParams.set('redirect_uri', params.redirectUri);
275
+ url.searchParams.set('state', params.state);
276
+ url.searchParams.set('nonce', params.nonce);
277
+ url.searchParams.set('client_id', params.clientId);
278
+ url.searchParams.set('response_type', 'token');
279
+ return url.toString();
280
+ }
281
+
282
+ /**
283
+ * Store tokens in localStorage
284
+ *
285
+ * @private
286
+ */
287
+ public storeTokens(accessToken: string, sessionId: string): void {
288
+ if (typeof window === 'undefined') {
289
+ return;
290
+ }
291
+
292
+ localStorage.setItem((this.constructor as any).TOKEN_STORAGE_KEY, accessToken);
293
+ localStorage.setItem((this.constructor as any).SESSION_STORAGE_KEY, sessionId);
294
+ }
295
+
296
+ /**
297
+ * Generate cryptographically secure state for CSRF protection
298
+ *
299
+ * @private
300
+ */
301
+ public generateState(): string {
302
+ if (typeof window !== 'undefined' && window.crypto && window.crypto.randomUUID) {
303
+ return window.crypto.randomUUID();
304
+ }
305
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
306
+ }
307
+
308
+ /**
309
+ * Generate nonce for replay attack prevention
310
+ *
311
+ * @private
312
+ */
313
+ public generateNonce(): string {
314
+ if (typeof window !== 'undefined' && window.crypto && window.crypto.randomUUID) {
315
+ return window.crypto.randomUUID();
316
+ }
317
+ return `${Date.now()}-${Math.random().toString(36).substring(2, 15)}`;
318
+ }
319
+
320
+ /**
321
+ * Store auth state in session storage
322
+ *
323
+ * @private
324
+ */
325
+ public storeAuthState(state: string, nonce: string): void {
326
+ if (typeof window === 'undefined') {
327
+ return;
328
+ }
329
+
330
+ sessionStorage.setItem((this.constructor as any).STATE_STORAGE_KEY, state);
331
+ sessionStorage.setItem((this.constructor as any).NONCE_STORAGE_KEY, nonce);
332
+ }
333
+
334
+ /**
335
+ * Get stored state
336
+ *
337
+ * @private
338
+ */
339
+ public getStoredState(): string | null {
340
+ if (typeof window === 'undefined') {
341
+ return null;
342
+ }
343
+
344
+ return sessionStorage.getItem((this.constructor as any).STATE_STORAGE_KEY);
345
+ }
346
+
347
+ /**
348
+ * Clear auth state from storage
349
+ *
350
+ * @private
351
+ */
352
+ public clearAuthState(): void {
353
+ if (typeof window === 'undefined') {
354
+ return;
355
+ }
356
+
357
+ sessionStorage.removeItem((this.constructor as any).STATE_STORAGE_KEY);
358
+ sessionStorage.removeItem((this.constructor as any).NONCE_STORAGE_KEY);
359
+ sessionStorage.removeItem((this.constructor as any).PRE_AUTH_URL_KEY);
360
+ }
361
+
362
+ /**
363
+ * Save pre-authentication URL to restore later
364
+ *
365
+ * @private
366
+ */
367
+ public savePreAuthUrl(url: string): void {
368
+ if (typeof window === 'undefined') {
369
+ return;
370
+ }
371
+
372
+ sessionStorage.setItem((this.constructor as any).PRE_AUTH_URL_KEY, url);
373
+ }
374
+
375
+ /**
376
+ * Clean authentication parameters from URL
377
+ *
378
+ * @private
379
+ */
380
+ public cleanAuthCallbackUrl(url: URL): void {
381
+ // Remove auth parameters
382
+ url.searchParams.delete('access_token');
383
+ url.searchParams.delete('session_id');
384
+ url.searchParams.delete('expires_at');
385
+ url.searchParams.delete('state');
386
+ url.searchParams.delete('nonce');
387
+ url.searchParams.delete('error');
388
+ url.searchParams.delete('error_description');
389
+
390
+ // Update URL without reloading page
391
+ window.history.replaceState({}, '', url.toString());
392
+ }
393
+ };
394
+ }
395
+
396
+ // Export the mixin function as both named and default
397
+ export { OxyServicesRedirectAuthMixin as RedirectAuthMixin };
@@ -16,7 +16,8 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
16
16
  async getProfileByUsername(username: string): Promise<User> {
17
17
  try {
18
18
  return await this.makeRequest<User>('GET', `/api/profiles/username/${username}`, undefined, {
19
- cache: false, // Never cache profiles
19
+ cache: true,
20
+ cacheTTL: 5 * 60 * 1000, // 5 minutes cache for profiles
20
21
  });
21
22
  } catch (error) {
22
23
  throw this.handleError(error);
@@ -37,7 +38,8 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
37
38
  '/api/profiles/search',
38
39
  paramsObj,
39
40
  {
40
- cache: false, // Never cache profiles
41
+ cache: true,
42
+ cacheTTL: 2 * 60 * 1000, // 2 minutes cache
41
43
  }
42
44
  );
43
45
 
@@ -95,7 +97,7 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
95
97
  [key: string]: any;
96
98
  }>> {
97
99
  return this.withAuthRetry(async () => {
98
- return await this.makeRequest('GET', '/api/profiles/recommendations', undefined, { cache: false });
100
+ return await this.makeRequest('GET', '/api/profiles/recommendations', undefined, { cache: true });
99
101
  }, 'getProfileRecommendations');
100
102
  }
101
103
 
@@ -105,7 +107,8 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
105
107
  async getUserById(userId: string): Promise<User> {
106
108
  try {
107
109
  return await this.makeRequest<User>('GET', `/api/users/${userId}`, undefined, {
108
- cache: false, // Never cache profiles
110
+ cache: true,
111
+ cacheTTL: 5 * 60 * 1000, // 5 minutes cache
109
112
  });
110
113
  } catch (error) {
111
114
  throw this.handleError(error);
@@ -114,41 +117,54 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
114
117
 
115
118
  /**
116
119
  * Get current user
117
- * Services never caches profile - always fetch fresh from backend
118
120
  */
119
121
  async getCurrentUser(): Promise<User> {
120
122
  return this.withAuthRetry(async () => {
121
123
  return await this.makeRequest<User>('GET', '/api/users/me', undefined, {
122
- cache: false, // Services never caches profile - only tokens
124
+ cache: true,
125
+ cacheTTL: 1 * 60 * 1000, // 1 minute cache for current user
123
126
  });
124
127
  }, 'getCurrentUser');
125
128
  }
126
129
 
127
130
  /**
128
131
  * Update user profile
132
+ * TanStack Query handles offline queuing automatically
129
133
  */
130
134
  async updateProfile(updates: Record<string, any>): Promise<User> {
131
135
  try {
132
136
  return await this.makeRequest<User>('PUT', '/api/users/me', updates, { cache: false });
133
137
  } catch (error) {
138
+ const errorAny = error as any;
139
+ const errorMessage = error instanceof Error ? error.message : String(error);
140
+ const status = errorAny?.status || errorAny?.response?.status;
141
+
142
+ // Check if it's an authentication error (401)
143
+ const isAuthError = status === 401 ||
144
+ errorMessage.includes('Authentication required') ||
145
+ errorMessage.includes('Invalid or missing authorization header');
146
+
147
+ // If authentication error and we don't have a token, this might be an offline session
148
+ // The caller should handle syncing the session before retrying
149
+ if (isAuthError && !this.hasValidToken()) {
150
+ // Re-throw with a specific message so the caller knows to sync
151
+ throw new Error('AUTH_REQUIRED_OFFLINE_SESSION: Session needs to be synced to get a token');
152
+ }
153
+
134
154
  throw this.handleError(error);
135
155
  }
136
156
  }
137
157
 
138
158
  /**
139
159
  * Get privacy settings for a user
140
- * @param userId - The user ID (MongoDB ObjectId, defaults to current user)
160
+ * @param userId - The user ID (defaults to current user)
141
161
  */
142
162
  async getPrivacySettings(userId?: string): Promise<any> {
143
163
  try {
144
- // Use getCurrentUserId() which returns MongoDB ObjectId from JWT token
145
- // Never use getCurrentUser().id as it may be set to publicKey
146
- const id = userId || this.getCurrentUserId();
147
- if (!id) {
148
- throw new Error('User ID is required');
149
- }
164
+ const id = userId || (await this.getCurrentUser()).id;
150
165
  return await this.makeRequest<any>('GET', `/api/privacy/${id}/privacy`, undefined, {
151
- cache: false,
166
+ cache: true,
167
+ cacheTTL: 2 * 60 * 1000, // 2 minutes cache
152
168
  });
153
169
  } catch (error) {
154
170
  throw this.handleError(error);
@@ -158,16 +174,11 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
158
174
  /**
159
175
  * Update privacy settings
160
176
  * @param settings - Partial privacy settings object
161
- * @param userId - The user ID (MongoDB ObjectId, defaults to current user)
177
+ * @param userId - The user ID (defaults to current user)
162
178
  */
163
179
  async updatePrivacySettings(settings: Record<string, any>, userId?: string): Promise<any> {
164
180
  try {
165
- // Use getCurrentUserId() which returns MongoDB ObjectId from JWT token
166
- // Never use getCurrentUser().id as it may be set to publicKey
167
- const id = userId || this.getCurrentUserId();
168
- if (!id) {
169
- throw new Error('User ID is required');
170
- }
181
+ const id = userId || (await this.getCurrentUser()).id;
171
182
  return await this.makeRequest<any>('PATCH', `/api/privacy/${id}/privacy`, settings, {
172
183
  cache: false,
173
184
  });
@@ -254,7 +265,8 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
254
265
  async getFollowStatus(userId: string): Promise<{ isFollowing: boolean }> {
255
266
  try {
256
267
  return await this.makeRequest('GET', `/api/users/${userId}/follow-status`, undefined, {
257
- cache: false,
268
+ cache: true,
269
+ cacheTTL: 1 * 60 * 1000, // 1 minute cache
258
270
  });
259
271
  } catch (error) {
260
272
  throw this.handleError(error);
@@ -271,7 +283,8 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
271
283
  try {
272
284
  const params = buildPaginationParams(pagination || {});
273
285
  const response = await this.makeRequest<{ data: User[]; pagination: { total: number; hasMore: boolean } }>('GET', `/api/users/${userId}/followers`, params, {
274
- cache: false,
286
+ cache: true,
287
+ cacheTTL: 2 * 60 * 1000, // 2 minutes cache
275
288
  });
276
289
  return {
277
290
  followers: response.data || [],
@@ -293,7 +306,8 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
293
306
  try {
294
307
  const params = buildPaginationParams(pagination || {});
295
308
  const response = await this.makeRequest<{ data: User[]; pagination: { total: number; hasMore: boolean } }>('GET', `/api/users/${userId}/following`, params, {
296
- cache: false,
309
+ cache: true,
310
+ cacheTTL: 2 * 60 * 1000, // 2 minutes cache
297
311
  });
298
312
  return {
299
313
  following: response.data || [],
@@ -375,3 +389,4 @@ export function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T)
375
389
  }
376
390
  };
377
391
  }
392
+
@@ -7,6 +7,9 @@
7
7
 
8
8
  import { OxyServicesBase } from '../OxyServices.base';
9
9
  import { OxyServicesAuthMixin } from './OxyServices.auth';
10
+ import { OxyServicesFedCMMixin } from './OxyServices.fedcm';
11
+ import { OxyServicesPopupAuthMixin } from './OxyServices.popup';
12
+ import { OxyServicesRedirectAuthMixin } from './OxyServices.redirect';
10
13
  import { OxyServicesUserMixin } from './OxyServices.user';
11
14
  import { OxyServicesPrivacyMixin } from './OxyServices.privacy';
12
15
  import { OxyServicesLanguageMixin } from './OxyServices.language';
@@ -19,29 +22,45 @@ import { OxyServicesAnalyticsMixin } from './OxyServices.analytics';
19
22
  import { OxyServicesDevicesMixin } from './OxyServices.devices';
20
23
  import { OxyServicesSecurityMixin } from './OxyServices.security';
21
24
  import { OxyServicesUtilityMixin } from './OxyServices.utility';
25
+ import { OxyServicesFeaturesMixin } from './OxyServices.features';
22
26
 
23
27
  /**
24
28
  * Composes all OxyServices mixins in the correct order
25
- *
29
+ *
26
30
  * Order matters for mixins - dependencies should be applied first.
27
31
  * This function ensures consistent composition across the codebase.
28
- *
32
+ *
33
+ * New cross-domain auth mixins added:
34
+ * - FedCM: Modern browser-native identity federation (Google-style)
35
+ * - Popup: OAuth2-style popup authentication
36
+ * - Redirect: Traditional redirect-based authentication
37
+ *
29
38
  * @returns The fully composed OxyServices class with all mixins applied
30
39
  */
31
40
  export function composeOxyServices() {
32
41
  return OxyServicesUtilityMixin(
33
- OxyServicesSecurityMixin(
34
- OxyServicesDevicesMixin(
35
- OxyServicesAnalyticsMixin(
36
- OxyServicesLocationMixin(
37
- OxyServicesDeveloperMixin(
38
- OxyServicesAssetsMixin(
39
- OxyServicesKarmaMixin(
40
- OxyServicesPaymentMixin(
41
- OxyServicesLanguageMixin(
42
- OxyServicesPrivacyMixin(
43
- OxyServicesUserMixin(
44
- OxyServicesAuthMixin(OxyServicesBase)
42
+ OxyServicesFeaturesMixin(
43
+ OxyServicesSecurityMixin(
44
+ OxyServicesDevicesMixin(
45
+ OxyServicesAnalyticsMixin(
46
+ OxyServicesLocationMixin(
47
+ OxyServicesDeveloperMixin(
48
+ OxyServicesAssetsMixin(
49
+ OxyServicesKarmaMixin(
50
+ OxyServicesPaymentMixin(
51
+ OxyServicesLanguageMixin(
52
+ OxyServicesPrivacyMixin(
53
+ OxyServicesUserMixin(
54
+ // Cross-domain authentication mixins (web-only)
55
+ OxyServicesRedirectAuthMixin(
56
+ OxyServicesPopupAuthMixin(
57
+ OxyServicesFedCMMixin(
58
+ // Base authentication mixin
59
+ OxyServicesAuthMixin(OxyServicesBase)
60
+ )
61
+ )
62
+ )
63
+ )
45
64
  )
46
65
  )
47
66
  )
@@ -1,14 +1,25 @@
1
1
  /**
2
2
  * Oxy Crypto Module
3
3
  *
4
- * Provides type definitions and polyfills for crypto operations.
5
- * Identity management (KeyManager, SignatureService) belongs ONLY in the Accounts app.
4
+ * Provides cryptographic identity management for the Oxy ecosystem.
5
+ * Handles key generation, secure storage, digital signatures, and recovery phrases.
6
6
  */
7
7
 
8
- // Import polyfills first - this ensures Buffer is available for crypto libraries
8
+ // Import polyfills first - this ensures Buffer is available for bip39 and other libraries
9
9
  import './polyfill';
10
10
 
11
- // Only export types - actual identity operations are in Accounts app
12
- export { type BackupData } from './types';
11
+ export { KeyManager, type KeyPair } from './keyManager';
12
+ export {
13
+ SignatureService,
14
+ type SignedMessage,
15
+ type AuthChallenge
16
+ } from './signatureService';
17
+ export {
18
+ RecoveryPhraseService,
19
+ type RecoveryPhraseResult
20
+ } from './recoveryPhrase';
21
+
22
+ // Re-export for convenience
23
+ export { KeyManager as default } from './keyManager';
13
24
 
14
25