@oxyhq/services 5.17.16 → 5.17.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (403) hide show
  1. package/README.md +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.fedcm.js +289 -0
  17. package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +1 -0
  18. package/lib/commonjs/core/mixins/OxyServices.popup.js +352 -0
  19. package/lib/commonjs/core/mixins/OxyServices.popup.js.map +1 -0
  20. package/lib/commonjs/core/mixins/OxyServices.redirect.js +378 -0
  21. package/lib/commonjs/core/mixins/OxyServices.redirect.js.map +1 -0
  22. package/lib/commonjs/core/mixins/OxyServices.user.js +35 -24
  23. package/lib/commonjs/core/mixins/OxyServices.user.js.map +1 -1
  24. package/lib/commonjs/core/mixins/index.js +27 -15
  25. package/lib/commonjs/core/mixins/index.js.map +1 -1
  26. package/lib/commonjs/crypto/index.js +30 -0
  27. package/lib/commonjs/crypto/index.js.map +1 -1
  28. package/lib/commonjs/crypto/keyManager.js +902 -0
  29. package/lib/commonjs/crypto/keyManager.js.map +1 -0
  30. package/lib/commonjs/crypto/polyfill.js +14 -5
  31. package/lib/commonjs/crypto/polyfill.js.map +1 -1
  32. package/lib/commonjs/crypto/recoveryPhrase.js +152 -0
  33. package/lib/commonjs/crypto/recoveryPhrase.js.map +1 -0
  34. package/lib/commonjs/crypto/signatureService.js +289 -0
  35. package/lib/commonjs/crypto/signatureService.js.map +1 -0
  36. package/lib/commonjs/i18n/locales/en-US.json +1 -1
  37. package/lib/commonjs/index.js +40 -26
  38. package/lib/commonjs/index.js.map +1 -1
  39. package/lib/commonjs/models/interfaces.js +0 -15
  40. package/lib/commonjs/models/interfaces.js.map +1 -1
  41. package/lib/commonjs/ui/components/BottomSheetRouter.js +9 -1
  42. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  43. package/lib/commonjs/ui/components/Icon.js.map +1 -1
  44. package/lib/commonjs/ui/components/IconButton/utils.js.map +1 -1
  45. package/lib/commonjs/ui/components/OxyProvider.js +41 -11
  46. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  47. package/lib/commonjs/ui/components/TextField/Adornment/utils.js.map +1 -1
  48. package/lib/commonjs/ui/components/TextField/helpers.js.map +1 -1
  49. package/lib/commonjs/ui/components/TouchableRipple/utils.js.map +1 -1
  50. package/lib/commonjs/ui/components/Typography/AnimatedText.js.map +1 -1
  51. package/lib/commonjs/ui/context/OxyContext.js +110 -192
  52. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  53. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +150 -19
  54. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  55. package/lib/commonjs/ui/context/hooks/useSessionManagement.js +279 -0
  56. package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +1 -0
  57. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +78 -64
  58. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  59. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +38 -51
  60. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  61. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +3 -3
  62. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  63. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +18 -12
  64. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  65. package/lib/commonjs/ui/hooks/useProfileEditing.js +3 -5
  66. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  67. package/lib/commonjs/ui/hooks/useSessionManagement.js +4 -8
  68. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  69. package/lib/commonjs/ui/hooks/useSessionSocket.js +162 -315
  70. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  71. package/lib/commonjs/ui/hooks/useStorage.js +24 -58
  72. package/lib/commonjs/ui/hooks/useStorage.js.map +1 -1
  73. package/lib/commonjs/ui/index.js +50 -21
  74. package/lib/commonjs/ui/index.js.map +1 -1
  75. package/lib/commonjs/ui/navigation/routes.js +5 -1
  76. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  77. package/lib/commonjs/ui/screens/AccountCenterScreen.js +2 -2
  78. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  79. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  80. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +29 -24
  81. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  82. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +3 -3
  83. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  84. package/lib/commonjs/ui/screens/OxyAuthScreen.js +134 -66
  85. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  86. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +6 -13
  87. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  88. package/lib/commonjs/ui/stores/accountStore.js +2 -4
  89. package/lib/commonjs/ui/stores/accountStore.js.map +1 -1
  90. package/lib/commonjs/ui/stores/authStore.js +45 -32
  91. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  92. package/lib/commonjs/ui/styles/spacing.js +54 -2
  93. package/lib/commonjs/ui/styles/spacing.js.map +1 -1
  94. package/lib/commonjs/ui/utils/avatarUtils.js +37 -41
  95. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  96. package/lib/commonjs/ui/utils/storageHelpers.js.map +1 -1
  97. package/lib/commonjs/utils/errorUtils.js +13 -0
  98. package/lib/commonjs/utils/errorUtils.js.map +1 -1
  99. package/lib/commonjs/utils/validationUtils.js +15 -1
  100. package/lib/commonjs/utils/validationUtils.js.map +1 -1
  101. package/lib/module/core/CrossDomainAuth.js +271 -0
  102. package/lib/module/core/CrossDomainAuth.js.map +1 -0
  103. package/lib/module/core/HttpService.js +82 -15
  104. package/lib/module/core/HttpService.js.map +1 -1
  105. package/lib/module/core/OxyServices.base.js +11 -4
  106. package/lib/module/core/OxyServices.base.js.map +1 -1
  107. package/lib/module/core/OxyServices.js +4 -1
  108. package/lib/module/core/OxyServices.js.map +1 -1
  109. package/lib/module/core/index.js +6 -1
  110. package/lib/module/core/index.js.map +1 -1
  111. package/lib/module/core/mixins/OxyServices.assets.js +16 -3
  112. package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
  113. package/lib/module/core/mixins/OxyServices.auth.js +73 -32
  114. package/lib/module/core/mixins/OxyServices.auth.js.map +1 -1
  115. package/lib/module/core/mixins/OxyServices.fedcm.js +286 -0
  116. package/lib/module/core/mixins/OxyServices.fedcm.js.map +1 -0
  117. package/lib/module/core/mixins/OxyServices.popup.js +349 -0
  118. package/lib/module/core/mixins/OxyServices.popup.js.map +1 -0
  119. package/lib/module/core/mixins/OxyServices.redirect.js +375 -0
  120. package/lib/module/core/mixins/OxyServices.redirect.js.map +1 -0
  121. package/lib/module/core/mixins/OxyServices.user.js +35 -24
  122. package/lib/module/core/mixins/OxyServices.user.js.map +1 -1
  123. package/lib/module/core/mixins/index.js +15 -3
  124. package/lib/module/core/mixins/index.js.map +1 -1
  125. package/lib/module/crypto/index.js +8 -4
  126. package/lib/module/crypto/index.js.map +1 -1
  127. package/lib/module/crypto/keyManager.js +899 -0
  128. package/lib/module/crypto/keyManager.js.map +1 -0
  129. package/lib/module/crypto/polyfill.js +6 -5
  130. package/lib/module/crypto/polyfill.js.map +1 -1
  131. package/lib/module/crypto/recoveryPhrase.js +147 -0
  132. package/lib/module/crypto/recoveryPhrase.js.map +1 -0
  133. package/lib/module/crypto/signatureService.js +286 -0
  134. package/lib/module/crypto/signatureService.js.map +1 -0
  135. package/lib/module/i18n/locales/en-US.json +1 -1
  136. package/lib/module/index.js +6 -9
  137. package/lib/module/index.js.map +1 -1
  138. package/lib/module/models/interfaces.js +0 -15
  139. package/lib/module/models/interfaces.js.map +1 -1
  140. package/lib/module/ui/components/BottomSheetRouter.js +6 -2
  141. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  142. package/lib/module/ui/components/Icon.js.map +1 -1
  143. package/lib/module/ui/components/IconButton/utils.js.map +1 -1
  144. package/lib/module/ui/components/OxyProvider.js +41 -11
  145. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  146. package/lib/module/ui/components/TextField/Adornment/utils.js.map +1 -1
  147. package/lib/module/ui/components/TextField/helpers.js.map +1 -1
  148. package/lib/module/ui/components/TouchableRipple/utils.js.map +1 -1
  149. package/lib/module/ui/components/Typography/AnimatedText.js.map +1 -1
  150. package/lib/module/ui/context/OxyContext.js +112 -184
  151. package/lib/module/ui/context/OxyContext.js.map +1 -1
  152. package/lib/module/ui/context/hooks/useAuthOperations.js +150 -19
  153. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  154. package/lib/module/ui/context/hooks/useSessionManagement.js +274 -0
  155. package/lib/module/ui/context/hooks/useSessionManagement.js.map +1 -0
  156. package/lib/module/ui/hooks/mutations/useAccountMutations.js +79 -64
  157. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  158. package/lib/module/ui/hooks/queries/useAccountQueries.js +31 -44
  159. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  160. package/lib/module/ui/hooks/queries/useSecurityQueries.js +1 -1
  161. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  162. package/lib/module/ui/hooks/queries/useServicesQueries.js +13 -7
  163. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  164. package/lib/module/ui/hooks/useProfileEditing.js +3 -5
  165. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  166. package/lib/module/ui/hooks/useSessionManagement.js +4 -8
  167. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  168. package/lib/module/ui/hooks/useSessionSocket.js +162 -315
  169. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  170. package/lib/module/ui/hooks/useStorage.js +25 -59
  171. package/lib/module/ui/hooks/useStorage.js.map +1 -1
  172. package/lib/module/ui/index.js +15 -10
  173. package/lib/module/ui/index.js.map +1 -1
  174. package/lib/module/ui/navigation/routes.js +5 -1
  175. package/lib/module/ui/navigation/routes.js.map +1 -1
  176. package/lib/module/ui/screens/AccountCenterScreen.js +2 -2
  177. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  178. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  179. package/lib/module/ui/screens/AccountSettingsScreen.js +29 -24
  180. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  181. package/lib/module/ui/screens/AccountSwitcherScreen.js +3 -3
  182. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  183. package/lib/module/ui/screens/OxyAuthScreen.js +135 -68
  184. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  185. package/lib/module/ui/screens/PrivacySettingsScreen.js +6 -13
  186. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  187. package/lib/module/ui/stores/accountStore.js +2 -4
  188. package/lib/module/ui/stores/accountStore.js.map +1 -1
  189. package/lib/module/ui/stores/authStore.js +45 -32
  190. package/lib/module/ui/stores/authStore.js.map +1 -1
  191. package/lib/module/ui/styles/spacing.js +6 -2
  192. package/lib/module/ui/styles/spacing.js.map +1 -1
  193. package/lib/module/ui/utils/avatarUtils.js +37 -40
  194. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  195. package/lib/module/ui/utils/storageHelpers.js.map +1 -1
  196. package/lib/module/utils/errorUtils.js +7 -0
  197. package/lib/module/utils/errorUtils.js.map +1 -1
  198. package/lib/module/utils/validationUtils.js +13 -0
  199. package/lib/module/utils/validationUtils.js.map +1 -1
  200. package/lib/typescript/core/CrossDomainAuth.d.ts +161 -0
  201. package/lib/typescript/core/CrossDomainAuth.d.ts.map +1 -0
  202. package/lib/typescript/core/HttpService.d.ts +1 -1
  203. package/lib/typescript/core/HttpService.d.ts.map +1 -1
  204. package/lib/typescript/core/OxyServices.base.d.ts +0 -6
  205. package/lib/typescript/core/OxyServices.base.d.ts.map +1 -1
  206. package/lib/typescript/core/OxyServices.d.ts +5 -36
  207. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  208. package/lib/typescript/core/index.d.ts +4 -0
  209. package/lib/typescript/core/index.d.ts.map +1 -1
  210. package/lib/typescript/core/mixins/OxyServices.analytics.d.ts.map +1 -1
  211. package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
  212. package/lib/typescript/core/mixins/OxyServices.auth.d.ts +40 -20
  213. package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
  214. package/lib/typescript/core/mixins/OxyServices.developer.d.ts.map +1 -1
  215. package/lib/typescript/core/mixins/OxyServices.devices.d.ts.map +1 -1
  216. package/lib/typescript/core/mixins/OxyServices.fedcm.d.ts +195 -0
  217. package/lib/typescript/core/mixins/OxyServices.fedcm.d.ts.map +1 -0
  218. package/lib/typescript/core/mixins/OxyServices.karma.d.ts.map +1 -1
  219. package/lib/typescript/core/mixins/OxyServices.language.d.ts.map +1 -1
  220. package/lib/typescript/core/mixins/OxyServices.location.d.ts.map +1 -1
  221. package/lib/typescript/core/mixins/OxyServices.payment.d.ts.map +1 -1
  222. package/lib/typescript/core/mixins/OxyServices.popup.d.ts +206 -0
  223. package/lib/typescript/core/mixins/OxyServices.popup.d.ts.map +1 -0
  224. package/lib/typescript/core/mixins/OxyServices.privacy.d.ts.map +1 -1
  225. package/lib/typescript/core/mixins/OxyServices.redirect.d.ts +246 -0
  226. package/lib/typescript/core/mixins/OxyServices.redirect.d.ts.map +1 -0
  227. package/lib/typescript/core/mixins/OxyServices.security.d.ts.map +1 -1
  228. package/lib/typescript/core/mixins/OxyServices.user.d.ts +6 -4
  229. package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
  230. package/lib/typescript/core/mixins/OxyServices.utility.d.ts.map +1 -1
  231. package/lib/typescript/core/mixins/index.d.ts +220 -8
  232. package/lib/typescript/core/mixins/index.d.ts.map +1 -1
  233. package/lib/typescript/crypto/index.d.ts +6 -3
  234. package/lib/typescript/crypto/index.d.ts.map +1 -1
  235. package/lib/typescript/crypto/keyManager.d.ts +190 -0
  236. package/lib/typescript/crypto/keyManager.d.ts.map +1 -0
  237. package/lib/typescript/crypto/polyfill.d.ts +4 -3
  238. package/lib/typescript/crypto/polyfill.d.ts.map +1 -1
  239. package/lib/typescript/crypto/recoveryPhrase.d.ts +59 -0
  240. package/lib/typescript/crypto/recoveryPhrase.d.ts.map +1 -0
  241. package/lib/typescript/crypto/signatureService.d.ts +87 -0
  242. package/lib/typescript/crypto/signatureService.d.ts.map +1 -0
  243. package/lib/typescript/index.d.ts +5 -6
  244. package/lib/typescript/index.d.ts.map +1 -1
  245. package/lib/typescript/models/interfaces.d.ts +2 -14
  246. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  247. package/lib/typescript/models/session.d.ts +0 -9
  248. package/lib/typescript/models/session.d.ts.map +1 -1
  249. package/lib/typescript/types/bip39.d.ts +32 -0
  250. package/lib/typescript/ui/components/BottomSheetRouter.d.ts +5 -0
  251. package/lib/typescript/ui/components/BottomSheetRouter.d.ts.map +1 -1
  252. package/lib/typescript/ui/components/IconButton/utils.d.ts +1 -1
  253. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  254. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts +2 -2
  255. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts +1 -1
  256. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts.map +1 -1
  257. package/lib/typescript/ui/components/TextField/helpers.d.ts +8 -8
  258. package/lib/typescript/ui/components/TextField/types.d.ts +1 -0
  259. package/lib/typescript/ui/components/TextField/types.d.ts.map +1 -1
  260. package/lib/typescript/ui/components/types.d.ts +4 -0
  261. package/lib/typescript/ui/components/types.d.ts.map +1 -1
  262. package/lib/typescript/ui/context/OxyContext.d.ts +57 -3
  263. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  264. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +10 -3
  265. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  266. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts +41 -0
  267. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts.map +1 -0
  268. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  269. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  270. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  271. package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -1
  272. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -1
  273. package/lib/typescript/ui/hooks/useSessionSocket.d.ts +1 -2
  274. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  275. package/lib/typescript/ui/hooks/useStorage.d.ts +3 -9
  276. package/lib/typescript/ui/hooks/useStorage.d.ts.map +1 -1
  277. package/lib/typescript/ui/index.d.ts +6 -2
  278. package/lib/typescript/ui/index.d.ts.map +1 -1
  279. package/lib/typescript/ui/navigation/routes.d.ts +1 -1
  280. package/lib/typescript/ui/navigation/routes.d.ts.map +1 -1
  281. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  282. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts +1 -1
  283. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  284. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  285. package/lib/typescript/ui/stores/accountStore.d.ts.map +1 -1
  286. package/lib/typescript/ui/stores/authStore.d.ts +8 -7
  287. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  288. package/lib/typescript/ui/styles/spacing.d.ts +5 -0
  289. package/lib/typescript/ui/styles/spacing.d.ts.map +1 -1
  290. package/lib/typescript/ui/types/navigation.d.ts +2 -1
  291. package/lib/typescript/ui/types/navigation.d.ts.map +1 -1
  292. package/lib/typescript/ui/utils/avatarUtils.d.ts +2 -13
  293. package/lib/typescript/ui/utils/avatarUtils.d.ts.map +1 -1
  294. package/lib/typescript/ui/utils/storageHelpers.d.ts +0 -3
  295. package/lib/typescript/ui/utils/storageHelpers.d.ts.map +1 -1
  296. package/lib/typescript/utils/errorUtils.d.ts +6 -0
  297. package/lib/typescript/utils/errorUtils.d.ts.map +1 -1
  298. package/lib/typescript/utils/validationUtils.d.ts +8 -0
  299. package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
  300. package/package.json +8 -7
  301. package/src/core/CrossDomainAuth.ts +307 -0
  302. package/src/core/HttpService.ts +99 -16
  303. package/src/core/OxyServices.base.ts +20 -3
  304. package/src/core/OxyServices.ts +7 -3
  305. package/src/core/index.ts +9 -1
  306. package/src/core/mixins/OxyServices.assets.ts +14 -3
  307. package/src/core/mixins/OxyServices.auth.ts +105 -36
  308. package/src/core/mixins/OxyServices.fedcm.ts +315 -0
  309. package/src/core/mixins/OxyServices.popup.ts +402 -0
  310. package/src/core/mixins/OxyServices.redirect.ts +397 -0
  311. package/src/core/mixins/OxyServices.user.ts +39 -24
  312. package/src/core/mixins/index.ts +19 -3
  313. package/src/crypto/index.ts +16 -5
  314. package/src/crypto/keyManager.ts +966 -0
  315. package/src/crypto/polyfill.ts +6 -5
  316. package/src/crypto/recoveryPhrase.ts +166 -0
  317. package/src/crypto/signatureService.ts +323 -0
  318. package/src/i18n/locales/en-US.json +1 -1
  319. package/src/index.ts +19 -15
  320. package/src/models/interfaces.ts +4 -16
  321. package/src/models/session.ts +2 -11
  322. package/src/types/bip39.d.ts +32 -0
  323. package/src/ui/components/BottomSheetRouter.tsx +6 -1
  324. package/src/ui/components/Icon.tsx +1 -1
  325. package/src/ui/components/IconButton/utils.ts +1 -1
  326. package/src/ui/components/OxyProvider.tsx +44 -12
  327. package/src/ui/components/TextField/Addons/Outline.tsx +2 -2
  328. package/src/ui/components/TextField/Adornment/utils.ts +2 -2
  329. package/src/ui/components/TextField/helpers.tsx +10 -10
  330. package/src/ui/components/TextField/types.tsx +1 -1
  331. package/src/ui/components/TouchableRipple/utils.ts +2 -2
  332. package/src/ui/components/Typography/AnimatedText.tsx +2 -2
  333. package/src/ui/components/types.tsx +6 -0
  334. package/src/ui/context/OxyContext.tsx +173 -185
  335. package/src/ui/context/hooks/useAuthOperations.ts +177 -36
  336. package/src/ui/context/hooks/useSessionManagement.ts +399 -0
  337. package/src/ui/hooks/mutations/useAccountMutations.ts +82 -65
  338. package/src/ui/hooks/queries/useAccountQueries.ts +29 -35
  339. package/src/ui/hooks/queries/useSecurityQueries.ts +1 -1
  340. package/src/ui/hooks/queries/useServicesQueries.ts +14 -6
  341. package/src/ui/hooks/useProfileEditing.ts +3 -3
  342. package/src/ui/hooks/useSessionManagement.ts +5 -10
  343. package/src/ui/hooks/useSessionSocket.ts +46 -175
  344. package/src/ui/hooks/useStorage.ts +24 -76
  345. package/src/ui/index.ts +22 -13
  346. package/src/ui/navigation/routes.ts +6 -2
  347. package/src/ui/screens/AccountCenterScreen.tsx +2 -2
  348. package/src/ui/screens/AccountOverviewScreen.tsx +1 -1
  349. package/src/ui/screens/AccountSettingsScreen.tsx +34 -37
  350. package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
  351. package/src/ui/screens/OxyAuthScreen.tsx +138 -64
  352. package/src/ui/screens/PrivacySettingsScreen.tsx +6 -12
  353. package/src/ui/stores/accountStore.ts +1 -11
  354. package/src/ui/stores/authStore.ts +43 -44
  355. package/src/ui/styles/spacing.ts +15 -2
  356. package/src/ui/types/navigation.ts +2 -2
  357. package/src/ui/utils/avatarUtils.ts +39 -46
  358. package/src/ui/utils/storageHelpers.ts +0 -4
  359. package/src/utils/__tests__/validationUtils.test.ts +16 -1
  360. package/src/utils/errorUtils.ts +8 -1
  361. package/src/utils/validationUtils.ts +12 -0
  362. package/lib/commonjs/core/services/SessionService.js +0 -163
  363. package/lib/commonjs/core/services/SessionService.js.map +0 -1
  364. package/lib/commonjs/core/services/TokenService.js +0 -220
  365. package/lib/commonjs/core/services/TokenService.js.map +0 -1
  366. package/lib/commonjs/crypto/types.js +0 -2
  367. package/lib/commonjs/crypto/types.js.map +0 -1
  368. package/lib/commonjs/ui/context/OxyContextBase.js +0 -21
  369. package/lib/commonjs/ui/context/OxyContextBase.js.map +0 -1
  370. package/lib/commonjs/ui/context/hooks/useStorage.js +0 -79
  371. package/lib/commonjs/ui/context/hooks/useStorage.js.map +0 -1
  372. package/lib/commonjs/ui/hooks/useAvatarPicker.js +0 -56
  373. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +0 -1
  374. package/lib/module/core/services/SessionService.js +0 -159
  375. package/lib/module/core/services/SessionService.js.map +0 -1
  376. package/lib/module/core/services/TokenService.js +0 -217
  377. package/lib/module/core/services/TokenService.js.map +0 -1
  378. package/lib/module/crypto/types.js +0 -2
  379. package/lib/module/crypto/types.js.map +0 -1
  380. package/lib/module/ui/context/OxyContextBase.js +0 -16
  381. package/lib/module/ui/context/OxyContextBase.js.map +0 -1
  382. package/lib/module/ui/context/hooks/useStorage.js +0 -74
  383. package/lib/module/ui/context/hooks/useStorage.js.map +0 -1
  384. package/lib/module/ui/hooks/useAvatarPicker.js +0 -50
  385. package/lib/module/ui/hooks/useAvatarPicker.js.map +0 -1
  386. package/lib/typescript/core/services/SessionService.d.ts +0 -78
  387. package/lib/typescript/core/services/SessionService.d.ts.map +0 -1
  388. package/lib/typescript/core/services/TokenService.d.ts +0 -72
  389. package/lib/typescript/core/services/TokenService.d.ts.map +0 -1
  390. package/lib/typescript/crypto/types.d.ts +0 -22
  391. package/lib/typescript/crypto/types.d.ts.map +0 -1
  392. package/lib/typescript/ui/context/OxyContextBase.d.ts +0 -63
  393. package/lib/typescript/ui/context/OxyContextBase.d.ts.map +0 -1
  394. package/lib/typescript/ui/context/hooks/useStorage.d.ts +0 -22
  395. package/lib/typescript/ui/context/hooks/useStorage.d.ts.map +0 -1
  396. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts +0 -19
  397. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts.map +0 -1
  398. package/src/core/services/SessionService.ts +0 -173
  399. package/src/core/services/TokenService.ts +0 -237
  400. package/src/crypto/types.ts +0 -23
  401. package/src/ui/context/OxyContextBase.tsx +0 -78
  402. package/src/ui/context/hooks/useStorage.ts +0 -104
  403. package/src/ui/hooks/useAvatarPicker.ts +0 -61
@@ -5,10 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useAuthOperations = void 0;
7
7
  var _react = require("react");
8
+ var _deviceManager = require("../../../utils/deviceManager");
8
9
  var _sessionHelpers = require("../../utils/sessionHelpers");
9
10
  var _errorHandlers = require("../../utils/errorHandlers");
11
+ var _crypto = require("../../../crypto");
12
+ const LOGIN_ERROR_CODE = 'LOGIN_ERROR';
10
13
  const LOGOUT_ERROR_CODE = 'LOGOUT_ERROR';
11
14
  const LOGOUT_ALL_ERROR_CODE = 'LOGOUT_ALL_ERROR';
15
+
16
+ /**
17
+ * Authentication operations using public key cryptography.
18
+ * Accepts public key as parameter - identity management is handled by the app layer.
19
+ */
12
20
  const useAuthOperations = ({
13
21
  oxyServices,
14
22
  storage,
@@ -28,15 +36,121 @@ const useAuthOperations = ({
28
36
  setAuthState,
29
37
  logger
30
38
  }) => {
31
- const completeSignIn = (0, _react.useCallback)(async sessionResponse => {
32
- if (!storage) throw new Error('Storage not initialized');
33
- setAuthState({
34
- isLoading: true,
35
- error: null
36
- });
39
+ /**
40
+ * Internal function to perform challenge-response sign in (works offline)
41
+ */
42
+ const performSignIn = (0, _react.useCallback)(async publicKey => {
43
+ const deviceFingerprintObj = _deviceManager.DeviceManager.getDeviceFingerprint();
44
+ const deviceFingerprint = JSON.stringify(deviceFingerprintObj);
45
+ const deviceInfo = await _deviceManager.DeviceManager.getDeviceInfo();
46
+ const deviceName = deviceInfo.deviceName || _deviceManager.DeviceManager.getDefaultDeviceName();
47
+ let challenge;
48
+ let isOffline = false;
49
+
50
+ // Try to request challenge from server (online)
37
51
  try {
38
- oxyServices.setTokens(sessionResponse.accessToken, sessionResponse.refreshToken);
39
- const fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
52
+ const challengeResponse = await oxyServices.requestChallenge(publicKey);
53
+ challenge = challengeResponse.challenge;
54
+ } catch (error) {
55
+ // Network error - generate challenge locally for offline sign-in
56
+ const errorMessage = error instanceof Error ? error.message : String(error);
57
+ const isNetworkError = errorMessage.includes('Network') || errorMessage.includes('network') || errorMessage.includes('Failed to fetch') || errorMessage.includes('fetch failed') || error?.code === 'NETWORK_ERROR' || error?.status === 0;
58
+ if (isNetworkError) {
59
+ if (__DEV__ && logger) {
60
+ logger('Network unavailable, performing offline sign-in');
61
+ }
62
+ // Generate challenge locally
63
+ challenge = await _crypto.SignatureService.generateChallenge();
64
+ isOffline = true;
65
+ } else {
66
+ // Re-throw non-network errors
67
+ throw error;
68
+ }
69
+ }
70
+
71
+ // Note: Biometric authentication check should be handled by the app layer
72
+ // (e.g., accounts app) before calling signIn. The biometric preference is stored
73
+ // in local storage as 'oxy_biometric_enabled' and can be checked there.
74
+
75
+ // Sign the challenge
76
+ const {
77
+ challenge: signature,
78
+ timestamp
79
+ } = await _crypto.SignatureService.signChallenge(challenge);
80
+ let fullUser;
81
+ let sessionResponse;
82
+ if (isOffline) {
83
+ // Offline sign-in: create local session and minimal user object
84
+ if (__DEV__ && logger) {
85
+ logger('Creating offline session');
86
+ }
87
+
88
+ // Generate a local session ID
89
+ const localSessionId = `offline_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
90
+ const localDeviceId = `device_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
91
+ const expiresAt = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(); // 7 days
92
+
93
+ // Create minimal user object with publicKey as id
94
+ fullUser = {
95
+ id: publicKey,
96
+ // Use publicKey as id (per migration document)
97
+ publicKey,
98
+ username: '',
99
+ privacySettings: {}
100
+ };
101
+ sessionResponse = {
102
+ sessionId: localSessionId,
103
+ deviceId: localDeviceId,
104
+ expiresAt,
105
+ user: {
106
+ id: publicKey,
107
+ username: ''
108
+ }
109
+ };
110
+
111
+ // Store offline session locally
112
+ const offlineSession = {
113
+ sessionId: localSessionId,
114
+ deviceId: localDeviceId,
115
+ expiresAt,
116
+ lastActive: new Date().toISOString(),
117
+ userId: publicKey,
118
+ isCurrent: true
119
+ };
120
+ setActiveSessionId(localSessionId);
121
+ await saveActiveSessionId(localSessionId);
122
+ updateSessions([offlineSession], {
123
+ merge: true
124
+ });
125
+
126
+ // Mark session as offline for later sync
127
+ if (storage) {
128
+ await storage.setItem(`oxy_session_${localSessionId}_offline`, 'true');
129
+ }
130
+ if (__DEV__ && logger) {
131
+ logger('Offline sign-in successful');
132
+ }
133
+ } else {
134
+ // Online sign-in: use normal flow
135
+ // Verify and create session
136
+ sessionResponse = await oxyServices.verifyChallenge(publicKey, challenge, signature, timestamp, deviceName, deviceFingerprint);
137
+
138
+ // Get token for the session
139
+ try {
140
+ await oxyServices.getTokenBySession(sessionResponse.sessionId);
141
+ } catch (tokenError) {
142
+ const errorMessage = tokenError instanceof Error ? tokenError.message : String(tokenError);
143
+ const status = tokenError?.status;
144
+ if (status === 404 || errorMessage.includes('404')) {
145
+ throw new Error(`Session was created but token could not be retrieved. Session ID: ${sessionResponse.sessionId.substring(0, 8)}...`);
146
+ }
147
+ throw tokenError;
148
+ }
149
+
150
+ // Get full user data
151
+ fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
152
+
153
+ // Fetch device sessions
40
154
  let allDeviceSessions = [];
41
155
  try {
42
156
  allDeviceSessions = await (0, _sessionHelpers.fetchSessionsWithFallback)(oxyServices, sessionResponse.sessionId, {
@@ -45,17 +159,21 @@ const useAuthOperations = ({
45
159
  logger
46
160
  });
47
161
  } catch (error) {
48
- if (__DEV__) {
49
- console.warn('Failed to fetch device sessions after login:', error);
162
+ if (__DEV__ && logger) {
163
+ logger('Failed to fetch device sessions after login', error);
50
164
  }
51
165
  }
166
+
167
+ // Check for existing session for same user and switch to it to avoid duplicates
52
168
  const existingSession = allDeviceSessions.find(session => session.userId?.toString() === fullUser.id?.toString() && session.sessionId !== sessionResponse.sessionId);
53
169
  if (existingSession) {
170
+ // Switch to existing session instead of creating duplicate
54
171
  try {
55
172
  await oxyServices.logoutSession(sessionResponse.sessionId, sessionResponse.sessionId);
56
173
  } catch (logoutError) {
57
- if (__DEV__) {
58
- console.warn('Failed to logout duplicate session:', logoutError);
174
+ // Non-critical - continue to switch session even if logout fails
175
+ if (__DEV__ && logger) {
176
+ logger('Failed to logout duplicate session, continuing with switch', logoutError);
59
177
  }
60
178
  }
61
179
  await switchSession(existingSession.sessionId);
@@ -70,14 +188,27 @@ const useAuthOperations = ({
70
188
  updateSessions(allDeviceSessions, {
71
189
  merge: true
72
190
  });
73
- await applyLanguagePreference(fullUser);
74
- loginSuccess();
75
- onAuthStateChange?.(fullUser);
76
- return fullUser;
191
+ }
192
+ await applyLanguagePreference(fullUser);
193
+ loginSuccess(fullUser);
194
+ onAuthStateChange?.(fullUser);
195
+ return fullUser;
196
+ }, [applyLanguagePreference, logger, loginSuccess, onAuthStateChange, oxyServices, saveActiveSessionId, setActiveSessionId, switchSession, updateSessions, storage]);
197
+
198
+ /**
199
+ * Sign in with existing public key
200
+ */
201
+ const signIn = (0, _react.useCallback)(async (publicKey, deviceName) => {
202
+ setAuthState({
203
+ isLoading: true,
204
+ error: null
205
+ });
206
+ try {
207
+ return await performSignIn(publicKey);
77
208
  } catch (error) {
78
209
  const message = (0, _errorHandlers.handleAuthError)(error, {
79
210
  defaultMessage: 'Sign in failed',
80
- code: 'COMPLETE_SIGNIN_ERROR',
211
+ code: LOGIN_ERROR_CODE,
81
212
  onError,
82
213
  setAuthError: msg => setAuthState({
83
214
  error: msg
@@ -91,7 +222,7 @@ const useAuthOperations = ({
91
222
  isLoading: false
92
223
  });
93
224
  }
94
- }, [storage, setAuthState, oxyServices, logger, saveActiveSessionId, setActiveSessionId, switchSession, updateSessions, applyLanguagePreference, loginSuccess, onAuthStateChange, onError, loginFailure]);
225
+ }, [setAuthState, performSignIn, loginFailure, onError, logger]);
95
226
 
96
227
  /**
97
228
  * Logout from session
@@ -165,7 +296,7 @@ const useAuthOperations = ({
165
296
  }
166
297
  }, [activeSessionId, clearSessionState, logger, onError, oxyServices, setAuthState]);
167
298
  return {
168
- completeSignIn,
299
+ signIn,
169
300
  logout,
170
301
  logoutAll
171
302
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_sessionHelpers","_errorHandlers","LOGOUT_ERROR_CODE","LOGOUT_ALL_ERROR_CODE","useAuthOperations","oxyServices","storage","sessions","activeSessionId","setActiveSessionId","updateSessions","saveActiveSessionId","clearSessionState","switchSession","applyLanguagePreference","onAuthStateChange","onError","loginSuccess","loginFailure","logoutStore","setAuthState","logger","completeSignIn","useCallback","sessionResponse","Error","isLoading","error","setTokens","accessToken","refreshToken","fullUser","getUserBySession","sessionId","allDeviceSessions","fetchSessionsWithFallback","fallbackDeviceId","deviceId","fallbackUserId","id","__DEV__","console","warn","existingSession","find","session","userId","toString","logoutSession","logoutError","filter","merge","message","handleAuthError","defaultMessage","code","setAuthError","msg","logout","targetSessionId","sessionToLogout","filteredSessions","length","isInvalid","isInvalidSessionError","status","undefined","logoutAll","logoutAllSessions","exports"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useAuthOperations.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_deviceManager","_sessionHelpers","_errorHandlers","_crypto","LOGIN_ERROR_CODE","LOGOUT_ERROR_CODE","LOGOUT_ALL_ERROR_CODE","useAuthOperations","oxyServices","storage","sessions","activeSessionId","setActiveSessionId","updateSessions","saveActiveSessionId","clearSessionState","switchSession","applyLanguagePreference","onAuthStateChange","onError","loginSuccess","loginFailure","logoutStore","setAuthState","logger","performSignIn","useCallback","publicKey","deviceFingerprintObj","DeviceManager","getDeviceFingerprint","deviceFingerprint","JSON","stringify","deviceInfo","getDeviceInfo","deviceName","getDefaultDeviceName","challenge","isOffline","challengeResponse","requestChallenge","error","errorMessage","Error","message","String","isNetworkError","includes","code","status","__DEV__","SignatureService","generateChallenge","signature","timestamp","signChallenge","fullUser","sessionResponse","localSessionId","Date","now","Math","random","toString","substr","localDeviceId","expiresAt","toISOString","id","username","privacySettings","sessionId","deviceId","user","offlineSession","lastActive","userId","isCurrent","merge","setItem","verifyChallenge","getTokenBySession","tokenError","substring","getUserBySession","allDeviceSessions","fetchSessionsWithFallback","fallbackDeviceId","fallbackUserId","existingSession","find","session","logoutSession","logoutError","filter","signIn","isLoading","handleAuthError","defaultMessage","setAuthError","msg","logout","targetSessionId","sessionToLogout","filteredSessions","length","isInvalid","isInvalidSessionError","undefined","logoutAll","logoutAllSessions","exports"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useAuthOperations.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSessionManagement = void 0;
7
+ var _react = require("react");
8
+ var _sessionUtils = require("../../../utils/sessionUtils");
9
+ var _sessionHelpers = require("../../utils/sessionHelpers");
10
+ var _storageHelpers = require("../../utils/storageHelpers");
11
+ var _errorHandlers = require("../../utils/errorHandlers");
12
+ var _queryClient = require("../../hooks/queryClient");
13
+ const DEFAULT_SAVE_ERROR_MESSAGE = 'Failed to save session data';
14
+ const CLEAR_STORAGE_ERROR = 'Failed to clear storage';
15
+
16
+ /**
17
+ * Manage session state, persistence, and high-level multi-session operations.
18
+ *
19
+ * @param options - Session management configuration
20
+ */
21
+ const useSessionManagement = ({
22
+ oxyServices,
23
+ storage,
24
+ storageKeyPrefix,
25
+ loginSuccess,
26
+ logoutStore,
27
+ applyLanguagePreference,
28
+ onAuthStateChange,
29
+ onError,
30
+ setAuthError,
31
+ logger,
32
+ setTokenReady,
33
+ queryClient
34
+ }) => {
35
+ const [sessions, setSessions] = (0, _react.useState)([]);
36
+ const [activeSessionId, setActiveSessionId] = (0, _react.useState)(null);
37
+ const refreshInFlightRef = (0, _react.useRef)(null);
38
+ const removedSessionsRef = (0, _react.useRef)(new Set());
39
+ const lastRefreshRef = (0, _react.useRef)(0);
40
+ const storageKeys = (0, _react.useMemo)(() => (0, _storageHelpers.getStorageKeys)(storageKeyPrefix), [storageKeyPrefix]);
41
+ const saveSessionIds = (0, _react.useCallback)(async sessionIds => {
42
+ if (!storage) return;
43
+ try {
44
+ const uniqueIds = Array.from(new Set(sessionIds));
45
+ await storage.setItem(storageKeys.sessionIds, JSON.stringify(uniqueIds));
46
+ } catch (error) {
47
+ if (logger) {
48
+ logger(DEFAULT_SAVE_ERROR_MESSAGE, error);
49
+ } else if (__DEV__) {
50
+ console.warn('Failed to save session IDs:', error);
51
+ }
52
+ }
53
+ }, [logger, storage, storageKeys.sessionIds]);
54
+ const updateSessions = (0, _react.useCallback)((incoming, options = {}) => {
55
+ setSessions(prevSessions => {
56
+ const processed = options.merge ? (0, _sessionUtils.mergeSessions)(prevSessions, incoming, activeSessionId, false) : (0, _sessionUtils.normalizeAndSortSessions)(incoming, activeSessionId, false);
57
+ if (storage) {
58
+ void saveSessionIds(processed.map(session => session.sessionId));
59
+ }
60
+ if ((0, _sessionUtils.sessionsArraysEqual)(prevSessions, processed)) {
61
+ return prevSessions;
62
+ }
63
+ return processed;
64
+ });
65
+ }, [activeSessionId, saveSessionIds, storage]);
66
+ const saveActiveSessionId = (0, _react.useCallback)(async sessionId => {
67
+ if (!storage) return;
68
+ try {
69
+ await storage.setItem(storageKeys.activeSessionId, sessionId);
70
+ } catch (error) {
71
+ (0, _errorHandlers.handleAuthError)(error, {
72
+ defaultMessage: DEFAULT_SAVE_ERROR_MESSAGE,
73
+ code: 'SESSION_PERSISTENCE_ERROR',
74
+ onError,
75
+ setAuthError,
76
+ logger
77
+ });
78
+ }
79
+ }, [logger, onError, setAuthError, storage, storageKeys.activeSessionId]);
80
+ const removeActiveSessionId = (0, _react.useCallback)(async () => {
81
+ if (!storage) return;
82
+ try {
83
+ await storage.removeItem(storageKeys.activeSessionId);
84
+ } catch (error) {
85
+ (0, _errorHandlers.handleAuthError)(error, {
86
+ defaultMessage: DEFAULT_SAVE_ERROR_MESSAGE,
87
+ code: 'SESSION_PERSISTENCE_ERROR',
88
+ onError,
89
+ setAuthError,
90
+ logger
91
+ });
92
+ }
93
+ }, [logger, onError, setAuthError, storage, storageKeys.activeSessionId]);
94
+ const clearSessionStorage = (0, _react.useCallback)(async () => {
95
+ if (!storage) return;
96
+ try {
97
+ await storage.removeItem(storageKeys.activeSessionId);
98
+ await storage.removeItem(storageKeys.sessionIds);
99
+ } catch (error) {
100
+ (0, _errorHandlers.handleAuthError)(error, {
101
+ defaultMessage: CLEAR_STORAGE_ERROR,
102
+ code: 'STORAGE_ERROR',
103
+ onError,
104
+ setAuthError,
105
+ logger
106
+ });
107
+ }
108
+ }, [logger, onError, setAuthError, storage, storageKeys.activeSessionId, storageKeys.sessionIds]);
109
+ const clearSessionState = (0, _react.useCallback)(async () => {
110
+ setSessions([]);
111
+ setActiveSessionId(null);
112
+ logoutStore();
113
+
114
+ // Clear TanStack Query cache (in-memory)
115
+ if (queryClient) {
116
+ queryClient.clear();
117
+ }
118
+
119
+ // Clear persisted query cache
120
+ if (storage) {
121
+ try {
122
+ await (0, _queryClient.clearQueryCache)(storage);
123
+ } catch (error) {
124
+ if (logger) {
125
+ logger('Failed to clear persisted query cache', error);
126
+ }
127
+ }
128
+ }
129
+ await clearSessionStorage();
130
+ onAuthStateChange?.(null);
131
+ }, [clearSessionStorage, logoutStore, onAuthStateChange, queryClient, storage, logger]);
132
+ const activateSession = (0, _react.useCallback)(async (sessionId, user) => {
133
+ await oxyServices.getTokenBySession(sessionId);
134
+ setTokenReady?.(true);
135
+ setActiveSessionId(sessionId);
136
+ loginSuccess(user);
137
+ await saveActiveSessionId(sessionId);
138
+ await applyLanguagePreference(user);
139
+ onAuthStateChange?.(user);
140
+ }, [applyLanguagePreference, loginSuccess, onAuthStateChange, oxyServices, saveActiveSessionId, setTokenReady]);
141
+ const trackRemovedSession = (0, _react.useCallback)(sessionId => {
142
+ removedSessionsRef.current.add(sessionId);
143
+ setTimeout(() => {
144
+ removedSessionsRef.current.delete(sessionId);
145
+ }, 5000);
146
+ }, []);
147
+ const findReplacementSession = (0, _react.useCallback)(async sessionIds => {
148
+ if (!sessionIds.length) {
149
+ return null;
150
+ }
151
+ const validationResults = await (0, _sessionHelpers.validateSessionBatch)(oxyServices, sessionIds, {
152
+ maxConcurrency: 3
153
+ });
154
+ const validSession = validationResults.find(result => result.valid);
155
+ if (!validSession) {
156
+ return null;
157
+ }
158
+ const validation = await oxyServices.validateSession(validSession.sessionId, {
159
+ useHeaderValidation: true
160
+ });
161
+ if (!validation?.valid || !validation.user) {
162
+ return null;
163
+ }
164
+ const user = validation.user;
165
+ await activateSession(validSession.sessionId, user);
166
+ return user;
167
+ }, [activateSession, oxyServices]);
168
+ const switchSession = (0, _react.useCallback)(async sessionId => {
169
+ try {
170
+ const validation = await oxyServices.validateSession(sessionId, {
171
+ useHeaderValidation: true
172
+ });
173
+ if (!validation?.valid) {
174
+ throw new Error('Session is invalid or expired');
175
+ }
176
+ if (!validation.user) {
177
+ throw new Error('User data not available from session validation');
178
+ }
179
+ const user = validation.user;
180
+ await activateSession(sessionId, user);
181
+ try {
182
+ const deviceSessions = await (0, _sessionHelpers.fetchSessionsWithFallback)(oxyServices, sessionId, {
183
+ fallbackUserId: user.id,
184
+ logger
185
+ });
186
+ updateSessions(deviceSessions, {
187
+ merge: true
188
+ });
189
+ } catch (error) {
190
+ if (__DEV__) {
191
+ console.warn('Failed to synchronize sessions after switch:', error);
192
+ }
193
+ }
194
+ return user;
195
+ } catch (error) {
196
+ const invalidSession = (0, _errorHandlers.isInvalidSessionError)(error);
197
+ if (invalidSession) {
198
+ updateSessions(sessions.filter(session => session.sessionId !== sessionId), {
199
+ merge: false
200
+ });
201
+ if (sessionId === activeSessionId) {
202
+ const otherSessionIds = sessions.filter(session => session.sessionId !== sessionId && !removedSessionsRef.current.has(session.sessionId)).map(session => session.sessionId);
203
+ const replacementUser = await findReplacementSession(otherSessionIds);
204
+ if (replacementUser) {
205
+ return replacementUser;
206
+ }
207
+ }
208
+ }
209
+ (0, _errorHandlers.handleAuthError)(error, {
210
+ defaultMessage: 'Failed to switch session',
211
+ code: invalidSession ? 'INVALID_SESSION' : 'SESSION_SWITCH_ERROR',
212
+ onError,
213
+ setAuthError,
214
+ logger
215
+ });
216
+ throw error instanceof Error ? error : new Error('Failed to switch session');
217
+ }
218
+ }, [activateSession, activeSessionId, findReplacementSession, logger, loginSuccess, onError, oxyServices, sessions, setAuthError, updateSessions]);
219
+ const refreshSessions = (0, _react.useCallback)(async activeUserId => {
220
+ if (!activeSessionId) return;
221
+ if (refreshInFlightRef.current) {
222
+ await refreshInFlightRef.current;
223
+ return;
224
+ }
225
+ const now = Date.now();
226
+ if (now - lastRefreshRef.current < 500) {
227
+ return;
228
+ }
229
+ lastRefreshRef.current = now;
230
+ const refreshPromise = (async () => {
231
+ try {
232
+ const deviceSessions = await (0, _sessionHelpers.fetchSessionsWithFallback)(oxyServices, activeSessionId, {
233
+ fallbackUserId: activeUserId,
234
+ logger
235
+ });
236
+ updateSessions(deviceSessions, {
237
+ merge: true
238
+ });
239
+ } catch (error) {
240
+ if ((0, _errorHandlers.isInvalidSessionError)(error)) {
241
+ const otherSessions = sessions.filter(session => session.sessionId !== activeSessionId && !removedSessionsRef.current.has(session.sessionId)).map(session => session.sessionId);
242
+ const replacementUser = await findReplacementSession(otherSessions);
243
+ if (!replacementUser) {
244
+ await clearSessionState();
245
+ }
246
+ return;
247
+ }
248
+ (0, _errorHandlers.handleAuthError)(error, {
249
+ defaultMessage: 'Failed to refresh sessions',
250
+ code: 'SESSION_REFRESH_ERROR',
251
+ onError,
252
+ setAuthError,
253
+ logger
254
+ });
255
+ } finally {
256
+ refreshInFlightRef.current = null;
257
+ lastRefreshRef.current = Date.now();
258
+ }
259
+ })();
260
+ refreshInFlightRef.current = refreshPromise;
261
+ await refreshPromise;
262
+ }, [activeSessionId, clearSessionState, findReplacementSession, logger, onError, oxyServices, sessions, setAuthError, updateSessions]);
263
+ const isRefreshInFlight = Boolean(refreshInFlightRef.current);
264
+ return {
265
+ sessions,
266
+ activeSessionId,
267
+ setActiveSessionId,
268
+ updateSessions,
269
+ switchSession,
270
+ refreshSessions,
271
+ clearSessionState,
272
+ saveActiveSessionId,
273
+ trackRemovedSession,
274
+ storageKeys,
275
+ isRefreshInFlight
276
+ };
277
+ };
278
+ exports.useSessionManagement = useSessionManagement;
279
+ //# sourceMappingURL=useSessionManagement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_sessionUtils","_sessionHelpers","_storageHelpers","_errorHandlers","_queryClient","DEFAULT_SAVE_ERROR_MESSAGE","CLEAR_STORAGE_ERROR","useSessionManagement","oxyServices","storage","storageKeyPrefix","loginSuccess","logoutStore","applyLanguagePreference","onAuthStateChange","onError","setAuthError","logger","setTokenReady","queryClient","sessions","setSessions","useState","activeSessionId","setActiveSessionId","refreshInFlightRef","useRef","removedSessionsRef","Set","lastRefreshRef","storageKeys","useMemo","getStorageKeys","saveSessionIds","useCallback","sessionIds","uniqueIds","Array","from","setItem","JSON","stringify","error","__DEV__","console","warn","updateSessions","incoming","options","prevSessions","processed","merge","mergeSessions","normalizeAndSortSessions","map","session","sessionId","sessionsArraysEqual","saveActiveSessionId","handleAuthError","defaultMessage","code","removeActiveSessionId","removeItem","clearSessionStorage","clearSessionState","clear","clearQueryCache","activateSession","user","getTokenBySession","trackRemovedSession","current","add","setTimeout","delete","findReplacementSession","length","validationResults","validateSessionBatch","maxConcurrency","validSession","find","result","valid","validation","validateSession","useHeaderValidation","switchSession","Error","deviceSessions","fetchSessionsWithFallback","fallbackUserId","id","invalidSession","isInvalidSessionError","filter","otherSessionIds","has","replacementUser","refreshSessions","activeUserId","now","Date","refreshPromise","otherSessions","isRefreshInFlight","Boolean","exports"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useSessionManagement.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AAGA,IAAAK,YAAA,GAAAL,OAAA;AA+BA,MAAMM,0BAA0B,GAAG,6BAA6B;AAChE,MAAMC,mBAAmB,GAAG,yBAAyB;;AAErD;AACA;AACA;AACA;AACA;AACO,MAAMC,oBAAoB,GAAGA,CAAC;EACnCC,WAAW;EACXC,OAAO;EACPC,gBAAgB;EAChBC,YAAY;EACZC,WAAW;EACXC,uBAAuB;EACvBC,iBAAiB;EACjBC,OAAO;EACPC,YAAY;EACZC,MAAM;EACNC,aAAa;EACbC;AAC2B,CAAC,KAAiC;EAC7D,MAAM,CAACC,QAAQ,EAAEC,WAAW,CAAC,GAAG,IAAAC,eAAQ,EAAkB,EAAE,CAAC;EAC7D,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAF,eAAQ,EAAgB,IAAI,CAAC;EAE3E,MAAMG,kBAAkB,GAAG,IAAAC,aAAM,EAAuB,IAAI,CAAC;EAC7D,MAAMC,kBAAkB,GAAG,IAAAD,aAAM,EAAc,IAAIE,GAAG,CAAC,CAAC,CAAC;EACzD,MAAMC,cAAc,GAAG,IAAAH,aAAM,EAAS,CAAC,CAAC;EAExC,MAAMI,WAAW,GAAG,IAAAC,cAAO,EAAC,MAAM,IAAAC,8BAAc,EAACtB,gBAAgB,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EAEvF,MAAMuB,cAAc,GAAG,IAAAC,kBAAW,EAChC,MAAOC,UAAoB,IAAoB;IAC7C,IAAI,CAAC1B,OAAO,EAAE;IACd,IAAI;MACF,MAAM2B,SAAS,GAAGC,KAAK,CAACC,IAAI,CAAC,IAAIV,GAAG,CAACO,UAAU,CAAC,CAAC;MACjD,MAAM1B,OAAO,CAAC8B,OAAO,CAACT,WAAW,CAACK,UAAU,EAAEK,IAAI,CAACC,SAAS,CAACL,SAAS,CAAC,CAAC;IAC1E,CAAC,CAAC,OAAOM,KAAK,EAAE;MACd,IAAIzB,MAAM,EAAE;QACVA,MAAM,CAACZ,0BAA0B,EAAEqC,KAAK,CAAC;MAC3C,CAAC,MAAM,IAAIC,OAAO,EAAE;QAClBC,OAAO,CAACC,IAAI,CAAC,6BAA6B,EAAEH,KAAK,CAAC;MACpD;IACF;EACF,CAAC,EACD,CAACzB,MAAM,EAAER,OAAO,EAAEqB,WAAW,CAACK,UAAU,CAC1C,CAAC;EAED,MAAMW,cAAc,GAAG,IAAAZ,kBAAW,EAChC,CAACa,QAAyB,EAAEC,OAA4B,GAAG,CAAC,CAAC,KAAW;IACtE3B,WAAW,CAAE4B,YAAY,IAAK;MAC5B,MAAMC,SAAS,GAAGF,OAAO,CAACG,KAAK,GAC3B,IAAAC,2BAAa,EAACH,YAAY,EAAEF,QAAQ,EAAExB,eAAe,EAAE,KAAK,CAAC,GAC7D,IAAA8B,sCAAwB,EAACN,QAAQ,EAAExB,eAAe,EAAE,KAAK,CAAC;MAE9D,IAAId,OAAO,EAAE;QACX,KAAKwB,cAAc,CAACiB,SAAS,CAACI,GAAG,CAAEC,OAAO,IAAKA,OAAO,CAACC,SAAS,CAAC,CAAC;MACpE;MAEA,IAAI,IAAAC,iCAAmB,EAACR,YAAY,EAAEC,SAAS,CAAC,EAAE;QAChD,OAAOD,YAAY;MACrB;MACA,OAAOC,SAAS;IAClB,CAAC,CAAC;EACJ,CAAC,EACD,CAAC3B,eAAe,EAAEU,cAAc,EAAExB,OAAO,CAC3C,CAAC;EAED,MAAMiD,mBAAmB,GAAG,IAAAxB,kBAAW,EACrC,MAAOsB,SAAiB,IAAoB;IAC1C,IAAI,CAAC/C,OAAO,EAAE;IACd,IAAI;MACF,MAAMA,OAAO,CAAC8B,OAAO,CAACT,WAAW,CAACP,eAAe,EAAEiC,SAAS,CAAC;IAC/D,CAAC,CAAC,OAAOd,KAAK,EAAE;MACd,IAAAiB,8BAAe,EAACjB,KAAK,EAAE;QACrBkB,cAAc,EAAEvD,0BAA0B;QAC1CwD,IAAI,EAAE,2BAA2B;QACjC9C,OAAO;QACPC,YAAY;QACZC;MACF,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CAACA,MAAM,EAAEF,OAAO,EAAEC,YAAY,EAAEP,OAAO,EAAEqB,WAAW,CAACP,eAAe,CACtE,CAAC;EAED,MAAMuC,qBAAqB,GAAG,IAAA5B,kBAAW,EAAC,YAA2B;IACnE,IAAI,CAACzB,OAAO,EAAE;IACd,IAAI;MACF,MAAMA,OAAO,CAACsD,UAAU,CAACjC,WAAW,CAACP,eAAe,CAAC;IACvD,CAAC,CAAC,OAAOmB,KAAK,EAAE;MACd,IAAAiB,8BAAe,EAACjB,KAAK,EAAE;QACrBkB,cAAc,EAAEvD,0BAA0B;QAC1CwD,IAAI,EAAE,2BAA2B;QACjC9C,OAAO;QACPC,YAAY;QACZC;MACF,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACA,MAAM,EAAEF,OAAO,EAAEC,YAAY,EAAEP,OAAO,EAAEqB,WAAW,CAACP,eAAe,CAAC,CAAC;EAEzE,MAAMyC,mBAAmB,GAAG,IAAA9B,kBAAW,EAAC,YAA2B;IACjE,IAAI,CAACzB,OAAO,EAAE;IACd,IAAI;MACF,MAAMA,OAAO,CAACsD,UAAU,CAACjC,WAAW,CAACP,eAAe,CAAC;MACrD,MAAMd,OAAO,CAACsD,UAAU,CAACjC,WAAW,CAACK,UAAU,CAAC;IAClD,CAAC,CAAC,OAAOO,KAAK,EAAE;MACd,IAAAiB,8BAAe,EAACjB,KAAK,EAAE;QACrBkB,cAAc,EAAEtD,mBAAmB;QACnCuD,IAAI,EAAE,eAAe;QACrB9C,OAAO;QACPC,YAAY;QACZC;MACF,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,CAACA,MAAM,EAAEF,OAAO,EAAEC,YAAY,EAAEP,OAAO,EAAEqB,WAAW,CAACP,eAAe,EAAEO,WAAW,CAACK,UAAU,CAAC,CAAC;EAEjG,MAAM8B,iBAAiB,GAAG,IAAA/B,kBAAW,EAAC,YAA2B;IAC/Db,WAAW,CAAC,EAAE,CAAC;IACfG,kBAAkB,CAAC,IAAI,CAAC;IACxBZ,WAAW,CAAC,CAAC;;IAEb;IACA,IAAIO,WAAW,EAAE;MACfA,WAAW,CAAC+C,KAAK,CAAC,CAAC;IACrB;;IAEA;IACA,IAAIzD,OAAO,EAAE;MACX,IAAI;QACF,MAAM,IAAA0D,4BAAe,EAAC1D,OAAO,CAAC;MAChC,CAAC,CAAC,OAAOiC,KAAK,EAAE;QACd,IAAIzB,MAAM,EAAE;UACVA,MAAM,CAAC,uCAAuC,EAAEyB,KAAK,CAAC;QACxD;MACF;IACF;IAEA,MAAMsB,mBAAmB,CAAC,CAAC;IAC3BlD,iBAAiB,GAAG,IAAI,CAAC;EAC3B,CAAC,EAAE,CAACkD,mBAAmB,EAAEpD,WAAW,EAAEE,iBAAiB,EAAEK,WAAW,EAAEV,OAAO,EAAEQ,MAAM,CAAC,CAAC;EAEvF,MAAMmD,eAAe,GAAG,IAAAlC,kBAAW,EACjC,OAAOsB,SAAiB,EAAEa,IAAU,KAAoB;IACtD,MAAM7D,WAAW,CAAC8D,iBAAiB,CAACd,SAAS,CAAC;IAC9CtC,aAAa,GAAG,IAAI,CAAC;IACrBM,kBAAkB,CAACgC,SAAS,CAAC;IAC7B7C,YAAY,CAAC0D,IAAI,CAAC;IAClB,MAAMX,mBAAmB,CAACF,SAAS,CAAC;IACpC,MAAM3C,uBAAuB,CAACwD,IAAI,CAAC;IACnCvD,iBAAiB,GAAGuD,IAAI,CAAC;EAC3B,CAAC,EACD,CACExD,uBAAuB,EACvBF,YAAY,EACZG,iBAAiB,EACjBN,WAAW,EACXkD,mBAAmB,EACnBxC,aAAa,CAEjB,CAAC;EAED,MAAMqD,mBAAmB,GAAG,IAAArC,kBAAW,EAAEsB,SAAiB,IAAK;IAC7D7B,kBAAkB,CAAC6C,OAAO,CAACC,GAAG,CAACjB,SAAS,CAAC;IACzCkB,UAAU,CAAC,MAAM;MACf/C,kBAAkB,CAAC6C,OAAO,CAACG,MAAM,CAACnB,SAAS,CAAC;IAC9C,CAAC,EAAE,IAAI,CAAC;EACV,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMoB,sBAAsB,GAAG,IAAA1C,kBAAW,EACxC,MAAOC,UAAoB,IAA2B;IACpD,IAAI,CAACA,UAAU,CAAC0C,MAAM,EAAE;MACtB,OAAO,IAAI;IACb;IAEA,MAAMC,iBAAiB,GAAG,MAAM,IAAAC,oCAAoB,EAACvE,WAAW,EAAE2B,UAAU,EAAE;MAC5E6C,cAAc,EAAE;IAClB,CAAC,CAAC;IAEF,MAAMC,YAAY,GAAGH,iBAAiB,CAACI,IAAI,CAAEC,MAAM,IAAKA,MAAM,CAACC,KAAK,CAAC;IACrE,IAAI,CAACH,YAAY,EAAE;MACjB,OAAO,IAAI;IACb;IAEA,MAAMI,UAAU,GAAG,MAAM7E,WAAW,CAAC8E,eAAe,CAACL,YAAY,CAACzB,SAAS,EAAE;MAC3E+B,mBAAmB,EAAE;IACvB,CAAC,CAAC;IAEF,IAAI,CAACF,UAAU,EAAED,KAAK,IAAI,CAACC,UAAU,CAAChB,IAAI,EAAE;MAC1C,OAAO,IAAI;IACb;IAEA,MAAMA,IAAI,GAAGgB,UAAU,CAAChB,IAAY;IACpC,MAAMD,eAAe,CAACa,YAAY,CAACzB,SAAS,EAAEa,IAAI,CAAC;IACnD,OAAOA,IAAI;EACb,CAAC,EACD,CAACD,eAAe,EAAE5D,WAAW,CAC/B,CAAC;EAED,MAAMgF,aAAa,GAAG,IAAAtD,kBAAW,EAC/B,MAAOsB,SAAiB,IAAoB;IAC1C,IAAI;MACF,MAAM6B,UAAU,GAAG,MAAM7E,WAAW,CAAC8E,eAAe,CAAC9B,SAAS,EAAE;QAAE+B,mBAAmB,EAAE;MAAK,CAAC,CAAC;MAC9F,IAAI,CAACF,UAAU,EAAED,KAAK,EAAE;QACtB,MAAM,IAAIK,KAAK,CAAC,+BAA+B,CAAC;MAClD;MAEA,IAAI,CAACJ,UAAU,CAAChB,IAAI,EAAE;QACpB,MAAM,IAAIoB,KAAK,CAAC,iDAAiD,CAAC;MACpE;MAEA,MAAMpB,IAAI,GAAGgB,UAAU,CAAChB,IAAY;MACpC,MAAMD,eAAe,CAACZ,SAAS,EAAEa,IAAI,CAAC;MAEtC,IAAI;QACF,MAAMqB,cAAc,GAAG,MAAM,IAAAC,yCAAyB,EAACnF,WAAW,EAAEgD,SAAS,EAAE;UAC7EoC,cAAc,EAAEvB,IAAI,CAACwB,EAAE;UACvB5E;QACF,CAAC,CAAC;QACF6B,cAAc,CAAC4C,cAAc,EAAE;UAAEvC,KAAK,EAAE;QAAK,CAAC,CAAC;MACjD,CAAC,CAAC,OAAOT,KAAK,EAAE;QACd,IAAIC,OAAO,EAAE;UACXC,OAAO,CAACC,IAAI,CAAC,8CAA8C,EAAEH,KAAK,CAAC;QACrE;MACF;MAEA,OAAO2B,IAAI;IACb,CAAC,CAAC,OAAO3B,KAAK,EAAE;MACd,MAAMoD,cAAc,GAAG,IAAAC,oCAAqB,EAACrD,KAAK,CAAC;MAEnD,IAAIoD,cAAc,EAAE;QAClBhD,cAAc,CAAC1B,QAAQ,CAAC4E,MAAM,CAAEzC,OAAO,IAAKA,OAAO,CAACC,SAAS,KAAKA,SAAS,CAAC,EAAE;UAC5EL,KAAK,EAAE;QACT,CAAC,CAAC;QACF,IAAIK,SAAS,KAAKjC,eAAe,EAAE;UACjC,MAAM0E,eAAe,GAAG7E,QAAQ,CAC7B4E,MAAM,CACJzC,OAAO,IACNA,OAAO,CAACC,SAAS,KAAKA,SAAS,IAAI,CAAC7B,kBAAkB,CAAC6C,OAAO,CAAC0B,GAAG,CAAC3C,OAAO,CAACC,SAAS,CACxF,CAAC,CACAF,GAAG,CAAEC,OAAO,IAAKA,OAAO,CAACC,SAAS,CAAC;UAEtC,MAAM2C,eAAe,GAAG,MAAMvB,sBAAsB,CAACqB,eAAe,CAAC;UACrE,IAAIE,eAAe,EAAE;YACnB,OAAOA,eAAe;UACxB;QACF;MACF;MAEA,IAAAxC,8BAAe,EAACjB,KAAK,EAAE;QACrBkB,cAAc,EAAE,0BAA0B;QAC1CC,IAAI,EAAEiC,cAAc,GAAG,iBAAiB,GAAG,sBAAsB;QACjE/E,OAAO;QACPC,YAAY;QACZC;MACF,CAAC,CAAC;MACF,MAAMyB,KAAK,YAAY+C,KAAK,GAAG/C,KAAK,GAAG,IAAI+C,KAAK,CAAC,0BAA0B,CAAC;IAC9E;EACF,CAAC,EACD,CACErB,eAAe,EACf7C,eAAe,EACfqD,sBAAsB,EACtB3D,MAAM,EACNN,YAAY,EACZI,OAAO,EACPP,WAAW,EACXY,QAAQ,EACRJ,YAAY,EACZ8B,cAAc,CAElB,CAAC;EAED,MAAMsD,eAAe,GAAG,IAAAlE,kBAAW,EACjC,MAAOmE,YAAqB,IAAoB;IAC9C,IAAI,CAAC9E,eAAe,EAAE;IAEtB,IAAIE,kBAAkB,CAAC+C,OAAO,EAAE;MAC9B,MAAM/C,kBAAkB,CAAC+C,OAAO;MAChC;IACF;IAEA,MAAM8B,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,CAAC;IACtB,IAAIA,GAAG,GAAGzE,cAAc,CAAC2C,OAAO,GAAG,GAAG,EAAE;MACtC;IACF;IACA3C,cAAc,CAAC2C,OAAO,GAAG8B,GAAG;IAE5B,MAAME,cAAc,GAAG,CAAC,YAAY;MAClC,IAAI;QACF,MAAMd,cAAc,GAAG,MAAM,IAAAC,yCAAyB,EAACnF,WAAW,EAAEe,eAAe,EAAE;UACnFqE,cAAc,EAAES,YAAY;UAC5BpF;QACF,CAAC,CAAC;QACF6B,cAAc,CAAC4C,cAAc,EAAE;UAAEvC,KAAK,EAAE;QAAK,CAAC,CAAC;MACjD,CAAC,CAAC,OAAOT,KAAK,EAAE;QACd,IAAI,IAAAqD,oCAAqB,EAACrD,KAAK,CAAC,EAAE;UAChC,MAAM+D,aAAa,GAAGrF,QAAQ,CAC3B4E,MAAM,CACJzC,OAAO,IACNA,OAAO,CAACC,SAAS,KAAKjC,eAAe,IACrC,CAACI,kBAAkB,CAAC6C,OAAO,CAAC0B,GAAG,CAAC3C,OAAO,CAACC,SAAS,CACrD,CAAC,CACAF,GAAG,CAAEC,OAAO,IAAKA,OAAO,CAACC,SAAS,CAAC;UAEtC,MAAM2C,eAAe,GAAG,MAAMvB,sBAAsB,CAAC6B,aAAa,CAAC;UACnE,IAAI,CAACN,eAAe,EAAE;YACpB,MAAMlC,iBAAiB,CAAC,CAAC;UAC3B;UACA;QACF;QAEA,IAAAN,8BAAe,EAACjB,KAAK,EAAE;UACrBkB,cAAc,EAAE,4BAA4B;UAC5CC,IAAI,EAAE,uBAAuB;UAC7B9C,OAAO;UACPC,YAAY;UACZC;QACF,CAAC,CAAC;MACJ,CAAC,SAAS;QACRQ,kBAAkB,CAAC+C,OAAO,GAAG,IAAI;QACjC3C,cAAc,CAAC2C,OAAO,GAAG+B,IAAI,CAACD,GAAG,CAAC,CAAC;MACrC;IACF,CAAC,EAAE,CAAC;IAEJ7E,kBAAkB,CAAC+C,OAAO,GAAGgC,cAAc;IAC3C,MAAMA,cAAc;EACtB,CAAC,EACD,CACEjF,eAAe,EACf0C,iBAAiB,EACjBW,sBAAsB,EACtB3D,MAAM,EACNF,OAAO,EACPP,WAAW,EACXY,QAAQ,EACRJ,YAAY,EACZ8B,cAAc,CAElB,CAAC;EAED,MAAM4D,iBAAiB,GAAGC,OAAO,CAAClF,kBAAkB,CAAC+C,OAAO,CAAC;EAE7D,OAAO;IACLpD,QAAQ;IACRG,eAAe;IACfC,kBAAkB;IAClBsB,cAAc;IACd0C,aAAa;IACbY,eAAe;IACfnC,iBAAiB;IACjBP,mBAAmB;IACnBa,mBAAmB;IACnBzC,WAAW;IACX4E;EACF,CAAC;AACH,CAAC;AAACE,OAAA,CAAArG,oBAAA,GAAAA,oBAAA","ignoreList":[]}