@oxyhq/services 5.16.44 → 5.17.1

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 (512) hide show
  1. package/README.md +29 -10
  2. package/lib/commonjs/core/OxyServices.js +1 -1
  3. package/lib/commonjs/core/index.js +20 -15
  4. package/lib/commonjs/core/index.js.map +1 -1
  5. package/lib/commonjs/core/mixins/OxyServices.auth.js +36 -53
  6. package/lib/commonjs/core/mixins/OxyServices.auth.js.map +1 -1
  7. package/lib/commonjs/core/mixins/OxyServices.user.js +10 -17
  8. package/lib/commonjs/core/mixins/OxyServices.user.js.map +1 -1
  9. package/lib/commonjs/core/services/TokenService.js +27 -13
  10. package/lib/commonjs/core/services/TokenService.js.map +1 -1
  11. package/lib/commonjs/crypto/index.js +0 -16
  12. package/lib/commonjs/crypto/index.js.map +1 -1
  13. package/lib/commonjs/crypto/keyManager.js +21 -22
  14. package/lib/commonjs/crypto/keyManager.js.map +1 -1
  15. package/lib/commonjs/crypto/polyfill.js +1 -10
  16. package/lib/commonjs/crypto/polyfill.js.map +1 -1
  17. package/lib/commonjs/crypto/signatureService.js +18 -32
  18. package/lib/commonjs/crypto/signatureService.js.map +1 -1
  19. package/lib/commonjs/index.js +13 -134
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/commonjs/models/interfaces.js +0 -7
  22. package/lib/commonjs/models/interfaces.js.map +1 -1
  23. package/lib/commonjs/node/index.js +1 -10
  24. package/lib/commonjs/node/index.js.map +1 -1
  25. package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -9
  26. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -1
  27. package/lib/commonjs/ui/components/OxyProvider.js +9 -20
  28. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  29. package/lib/commonjs/ui/context/OxyContext.js +779 -450
  30. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  31. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +551 -0
  32. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -0
  33. package/lib/commonjs/ui/context/hooks/useDeviceManagement.js +73 -0
  34. package/lib/commonjs/ui/context/hooks/useDeviceManagement.js.map +1 -0
  35. package/lib/commonjs/ui/context/hooks/useStorage.js +79 -0
  36. package/lib/commonjs/ui/context/hooks/useStorage.js.map +1 -0
  37. package/lib/commonjs/ui/hooks/index.js +0 -20
  38. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  39. package/lib/commonjs/ui/hooks/mutations/index.js +0 -12
  40. package/lib/commonjs/ui/hooks/mutations/index.js.map +1 -1
  41. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +23 -74
  42. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  43. package/lib/commonjs/ui/hooks/queries/index.js +0 -12
  44. package/lib/commonjs/ui/hooks/queries/index.js.map +1 -1
  45. package/lib/commonjs/ui/hooks/queries/queryKeys.js +1 -3
  46. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  47. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +28 -64
  48. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  49. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +6 -4
  50. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  51. package/lib/commonjs/ui/hooks/useDeviceManagement.js +73 -0
  52. package/lib/commonjs/ui/hooks/useDeviceManagement.js.map +1 -0
  53. package/lib/commonjs/ui/hooks/useProfileEditing.js +5 -3
  54. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -1
  55. package/lib/commonjs/ui/hooks/useSessionManagement.js +284 -0
  56. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -0
  57. package/lib/commonjs/ui/index.js +2 -10
  58. package/lib/commonjs/ui/index.js.map +1 -1
  59. package/lib/commonjs/ui/navigation/routes.js +1 -5
  60. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  61. package/lib/commonjs/ui/screens/AccountCenterScreen.js +4 -9
  62. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  63. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +19 -37
  64. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  65. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +5 -5
  66. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  67. package/lib/commonjs/ui/screens/OxyAuthScreen.js +15 -2
  68. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  69. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +97 -76
  70. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  71. package/lib/commonjs/ui/screens/ProfileScreen.js +6 -6
  72. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  73. package/lib/commonjs/ui/stores/authStore.js +6 -54
  74. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  75. package/lib/commonjs/ui/styles/spacing.js +2 -54
  76. package/lib/commonjs/ui/styles/spacing.js.map +1 -1
  77. package/lib/commonjs/ui/utils/avatarUtils.js +12 -9
  78. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  79. package/lib/commonjs/ui/utils/sessionHelpers.js +1 -7
  80. package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -1
  81. package/lib/commonjs/utils/deviceManager.js +177 -0
  82. package/lib/commonjs/utils/deviceManager.js.map +1 -0
  83. package/lib/commonjs/utils/errorUtils.js +0 -13
  84. package/lib/commonjs/utils/errorUtils.js.map +1 -1
  85. package/lib/commonjs/utils/index.js +7 -0
  86. package/lib/commonjs/utils/index.js.map +1 -1
  87. package/lib/commonjs/utils/sessionUtils.js +1 -8
  88. package/lib/commonjs/utils/sessionUtils.js.map +1 -1
  89. package/lib/commonjs/utils/validationUtils.js +1 -15
  90. package/lib/commonjs/utils/validationUtils.js.map +1 -1
  91. package/lib/module/core/OxyServices.js +1 -1
  92. package/lib/module/core/index.js +4 -6
  93. package/lib/module/core/index.js.map +1 -1
  94. package/lib/module/core/mixins/OxyServices.auth.js +36 -53
  95. package/lib/module/core/mixins/OxyServices.auth.js.map +1 -1
  96. package/lib/module/core/mixins/OxyServices.user.js +10 -17
  97. package/lib/module/core/mixins/OxyServices.user.js.map +1 -1
  98. package/lib/module/core/services/TokenService.js +27 -13
  99. package/lib/module/core/services/TokenService.js.map +1 -1
  100. package/lib/module/crypto/index.js +0 -3
  101. package/lib/module/crypto/index.js.map +1 -1
  102. package/lib/module/crypto/keyManager.js +21 -22
  103. package/lib/module/crypto/keyManager.js.map +1 -1
  104. package/lib/module/crypto/polyfill.js +1 -2
  105. package/lib/module/crypto/polyfill.js.map +1 -1
  106. package/lib/module/crypto/signatureService.js +18 -32
  107. package/lib/module/crypto/signatureService.js.map +1 -1
  108. package/lib/module/index.js +7 -19
  109. package/lib/module/index.js.map +1 -1
  110. package/lib/module/models/interfaces.js +0 -7
  111. package/lib/module/models/interfaces.js.map +1 -1
  112. package/lib/module/node/index.js +0 -3
  113. package/lib/module/node/index.js.map +1 -1
  114. package/lib/module/ui/components/BottomSheetRouter.js +2 -6
  115. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  116. package/lib/module/ui/components/OxyProvider.js +9 -20
  117. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  118. package/lib/module/ui/context/OxyContext.js +779 -450
  119. package/lib/module/ui/context/OxyContext.js.map +1 -1
  120. package/lib/module/ui/context/hooks/useAuthOperations.js +545 -0
  121. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -0
  122. package/lib/module/ui/context/hooks/useDeviceManagement.js +68 -0
  123. package/lib/module/ui/context/hooks/useDeviceManagement.js.map +1 -0
  124. package/lib/module/ui/context/hooks/useStorage.js +74 -0
  125. package/lib/module/ui/context/hooks/useStorage.js.map +1 -0
  126. package/lib/module/ui/hooks/index.js +0 -1
  127. package/lib/module/ui/hooks/index.js.map +1 -1
  128. package/lib/module/ui/hooks/mutations/index.js +1 -1
  129. package/lib/module/ui/hooks/mutations/index.js.map +1 -1
  130. package/lib/module/ui/hooks/mutations/useAccountMutations.js +21 -71
  131. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  132. package/lib/module/ui/hooks/queries/index.js +1 -1
  133. package/lib/module/ui/hooks/queries/index.js.map +1 -1
  134. package/lib/module/ui/hooks/queries/queryKeys.js +1 -3
  135. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  136. package/lib/module/ui/hooks/queries/useAccountQueries.js +27 -61
  137. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  138. package/lib/module/ui/hooks/queries/useServicesQueries.js +6 -4
  139. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  140. package/lib/module/ui/hooks/useDeviceManagement.js +68 -0
  141. package/lib/module/ui/hooks/useDeviceManagement.js.map +1 -0
  142. package/lib/module/ui/hooks/useProfileEditing.js +5 -3
  143. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -1
  144. package/lib/module/ui/hooks/useSessionManagement.js +279 -0
  145. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -0
  146. package/lib/module/ui/index.js +1 -2
  147. package/lib/module/ui/index.js.map +1 -1
  148. package/lib/module/ui/navigation/routes.js +1 -5
  149. package/lib/module/ui/navigation/routes.js.map +1 -1
  150. package/lib/module/ui/screens/AccountCenterScreen.js +4 -9
  151. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  152. package/lib/module/ui/screens/AccountSettingsScreen.js +19 -37
  153. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  154. package/lib/module/ui/screens/AccountSwitcherScreen.js +5 -5
  155. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  156. package/lib/module/ui/screens/OxyAuthScreen.js +15 -2
  157. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  158. package/lib/module/ui/screens/PrivacySettingsScreen.js +98 -77
  159. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  160. package/lib/module/ui/screens/ProfileScreen.js +6 -6
  161. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  162. package/lib/module/ui/stores/authStore.js +6 -54
  163. package/lib/module/ui/stores/authStore.js.map +1 -1
  164. package/lib/module/ui/styles/spacing.js +2 -6
  165. package/lib/module/ui/styles/spacing.js.map +1 -1
  166. package/lib/module/ui/utils/avatarUtils.js +12 -9
  167. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  168. package/lib/module/ui/utils/sessionHelpers.js +1 -7
  169. package/lib/module/ui/utils/sessionHelpers.js.map +1 -1
  170. package/lib/module/utils/deviceManager.js +171 -0
  171. package/lib/module/utils/deviceManager.js.map +1 -0
  172. package/lib/module/utils/errorUtils.js +0 -7
  173. package/lib/module/utils/errorUtils.js.map +1 -1
  174. package/lib/module/utils/index.js +1 -2
  175. package/lib/module/utils/index.js.map +1 -1
  176. package/lib/module/utils/sessionUtils.js +1 -8
  177. package/lib/module/utils/sessionUtils.js.map +1 -1
  178. package/lib/module/utils/validationUtils.js +0 -13
  179. package/lib/module/utils/validationUtils.js.map +1 -1
  180. package/lib/typescript/core/OxyServices.d.ts +1 -1
  181. package/lib/typescript/core/index.d.ts +3 -3
  182. package/lib/typescript/core/index.d.ts.map +1 -1
  183. package/lib/typescript/core/mixins/OxyServices.auth.d.ts +21 -44
  184. package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
  185. package/lib/typescript/core/mixins/OxyServices.user.d.ts +1 -0
  186. package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
  187. package/lib/typescript/core/mixins/index.d.ts +8 -15
  188. package/lib/typescript/core/mixins/index.d.ts.map +1 -1
  189. package/lib/typescript/core/services/TokenService.d.ts.map +1 -1
  190. package/lib/typescript/crypto/index.d.ts +0 -1
  191. package/lib/typescript/crypto/index.d.ts.map +1 -1
  192. package/lib/typescript/crypto/keyManager.d.ts +2 -15
  193. package/lib/typescript/crypto/keyManager.d.ts.map +1 -1
  194. package/lib/typescript/crypto/polyfill.d.ts +1 -2
  195. package/lib/typescript/crypto/polyfill.d.ts.map +1 -1
  196. package/lib/typescript/crypto/signatureService.d.ts +0 -13
  197. package/lib/typescript/crypto/signatureService.d.ts.map +1 -1
  198. package/lib/typescript/index.d.ts +7 -12
  199. package/lib/typescript/index.d.ts.map +1 -1
  200. package/lib/typescript/models/interfaces.d.ts +36 -5
  201. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  202. package/lib/typescript/models/session.d.ts +18 -3
  203. package/lib/typescript/models/session.d.ts.map +1 -1
  204. package/lib/typescript/node/index.d.ts +0 -1
  205. package/lib/typescript/node/index.d.ts.map +1 -1
  206. package/lib/typescript/ui/components/BottomSheetRouter.d.ts +0 -5
  207. package/lib/typescript/ui/components/BottomSheetRouter.d.ts.map +1 -1
  208. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  209. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts +2 -2
  210. package/lib/typescript/ui/components/TextField/helpers.d.ts +2 -2
  211. package/lib/typescript/ui/components/TextField/types.d.ts +0 -1
  212. package/lib/typescript/ui/components/TextField/types.d.ts.map +1 -1
  213. package/lib/typescript/ui/context/OxyContext.d.ts +28 -5
  214. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  215. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +59 -0
  216. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -0
  217. package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts +27 -0
  218. package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts.map +1 -0
  219. package/lib/typescript/ui/context/hooks/useStorage.d.ts +22 -0
  220. package/lib/typescript/ui/context/hooks/useStorage.d.ts.map +1 -0
  221. package/lib/typescript/ui/hooks/index.d.ts +0 -1
  222. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  223. package/lib/typescript/ui/hooks/mutations/index.d.ts +1 -1
  224. package/lib/typescript/ui/hooks/mutations/index.d.ts.map +1 -1
  225. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts +8 -19
  226. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  227. package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts +1 -1
  228. package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
  229. package/lib/typescript/ui/hooks/queries/index.d.ts +1 -1
  230. package/lib/typescript/ui/hooks/queries/index.d.ts.map +1 -1
  231. package/lib/typescript/ui/hooks/queries/queryKeys.d.ts +0 -2
  232. package/lib/typescript/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  233. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts +5 -17
  234. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +1 -1
  235. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  236. package/lib/typescript/ui/hooks/useDeviceManagement.d.ts +27 -0
  237. package/lib/typescript/ui/hooks/useDeviceManagement.d.ts.map +1 -0
  238. package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -1
  239. package/lib/typescript/ui/hooks/useSessionManagement.d.ts +41 -0
  240. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -0
  241. package/lib/typescript/ui/index.d.ts +0 -1
  242. package/lib/typescript/ui/index.d.ts.map +1 -1
  243. package/lib/typescript/ui/navigation/routes.d.ts +1 -1
  244. package/lib/typescript/ui/navigation/routes.d.ts.map +1 -1
  245. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  246. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  247. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  248. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  249. package/lib/typescript/ui/stores/authStore.d.ts +1 -8
  250. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  251. package/lib/typescript/ui/styles/spacing.d.ts +0 -5
  252. package/lib/typescript/ui/styles/spacing.d.ts.map +1 -1
  253. package/lib/typescript/ui/utils/avatarUtils.d.ts +4 -1
  254. package/lib/typescript/ui/utils/avatarUtils.d.ts.map +1 -1
  255. package/lib/typescript/ui/utils/sessionHelpers.d.ts +0 -1
  256. package/lib/typescript/ui/utils/sessionHelpers.d.ts.map +1 -1
  257. package/lib/typescript/utils/deviceManager.d.ts +66 -0
  258. package/lib/typescript/utils/deviceManager.d.ts.map +1 -0
  259. package/lib/typescript/utils/errorUtils.d.ts +0 -6
  260. package/lib/typescript/utils/errorUtils.d.ts.map +1 -1
  261. package/lib/typescript/utils/index.d.ts +2 -0
  262. package/lib/typescript/utils/index.d.ts.map +1 -1
  263. package/lib/typescript/utils/sessionUtils.d.ts.map +1 -1
  264. package/lib/typescript/utils/validationUtils.d.ts +0 -8
  265. package/lib/typescript/utils/validationUtils.d.ts.map +1 -1
  266. package/package.json +1 -6
  267. package/src/core/OxyServices.ts +1 -1
  268. package/src/core/index.ts +5 -8
  269. package/src/core/mixins/OxyServices.auth.ts +44 -87
  270. package/src/core/mixins/OxyServices.user.ts +10 -18
  271. package/src/core/services/TokenService.ts +27 -16
  272. package/src/crypto/index.ts +1 -3
  273. package/src/crypto/keyManager.ts +21 -30
  274. package/src/crypto/polyfill.ts +1 -2
  275. package/src/crypto/signatureService.ts +19 -43
  276. package/src/index.ts +6 -41
  277. package/src/models/interfaces.ts +39 -12
  278. package/src/models/session.ts +19 -7
  279. package/src/node/index.ts +0 -3
  280. package/src/ui/components/BottomSheetRouter.tsx +1 -6
  281. package/src/ui/components/OxyProvider.tsx +10 -17
  282. package/src/ui/components/TextField/Addons/Outline.tsx +2 -2
  283. package/src/ui/components/TextField/helpers.tsx +2 -2
  284. package/src/ui/components/TextField/types.tsx +1 -1
  285. package/src/ui/context/OxyContext.tsx +831 -463
  286. package/src/ui/context/hooks/useAuthOperations.ts +620 -0
  287. package/src/ui/context/hooks/useDeviceManagement.ts +108 -0
  288. package/src/ui/context/hooks/useStorage.ts +104 -0
  289. package/src/ui/hooks/index.ts +1 -2
  290. package/src/ui/hooks/mutations/index.ts +0 -2
  291. package/src/ui/hooks/mutations/useAccountMutations.ts +20 -66
  292. package/src/ui/hooks/queries/index.ts +0 -2
  293. package/src/ui/hooks/queries/queryKeys.ts +0 -2
  294. package/src/ui/hooks/queries/useAccountQueries.ts +19 -53
  295. package/src/ui/hooks/queries/useServicesQueries.ts +5 -5
  296. package/src/ui/hooks/useDeviceManagement.ts +108 -0
  297. package/src/ui/hooks/useProfileEditing.ts +3 -3
  298. package/src/ui/hooks/useSessionManagement.ts +405 -0
  299. package/src/ui/index.ts +1 -2
  300. package/src/ui/navigation/routes.ts +2 -6
  301. package/src/ui/screens/AccountCenterScreen.tsx +4 -9
  302. package/src/ui/screens/AccountSettingsScreen.tsx +31 -49
  303. package/src/ui/screens/AccountSwitcherScreen.tsx +5 -5
  304. package/src/ui/screens/OxyAuthScreen.tsx +19 -4
  305. package/src/ui/screens/PrivacySettingsScreen.tsx +101 -67
  306. package/src/ui/screens/ProfileScreen.tsx +10 -10
  307. package/src/ui/stores/authStore.ts +8 -48
  308. package/src/ui/styles/spacing.ts +2 -15
  309. package/src/ui/utils/avatarUtils.ts +21 -19
  310. package/src/ui/utils/sessionHelpers.ts +0 -7
  311. package/src/utils/__tests__/validationUtils.test.ts +1 -16
  312. package/src/utils/deviceManager.ts +198 -0
  313. package/src/utils/errorUtils.ts +1 -8
  314. package/src/utils/index.ts +2 -1
  315. package/src/utils/sessionUtils.ts +0 -8
  316. package/src/utils/validationUtils.ts +0 -12
  317. package/lib/commonjs/adapters/expo/crypto.js +0 -56
  318. package/lib/commonjs/adapters/expo/crypto.js.map +0 -1
  319. package/lib/commonjs/adapters/expo/fetch.js +0 -30
  320. package/lib/commonjs/adapters/expo/fetch.js.map +0 -1
  321. package/lib/commonjs/adapters/expo/index.js +0 -48
  322. package/lib/commonjs/adapters/expo/index.js.map +0 -1
  323. package/lib/commonjs/adapters/expo/storage.js +0 -201
  324. package/lib/commonjs/adapters/expo/storage.js.map +0 -1
  325. package/lib/commonjs/adapters/index.js +0 -48
  326. package/lib/commonjs/adapters/index.js.map +0 -1
  327. package/lib/commonjs/adapters/node/crypto.js +0 -40
  328. package/lib/commonjs/adapters/node/crypto.js.map +0 -1
  329. package/lib/commonjs/adapters/node/fetch.js +0 -62
  330. package/lib/commonjs/adapters/node/fetch.js.map +0 -1
  331. package/lib/commonjs/adapters/node/index.js +0 -34
  332. package/lib/commonjs/adapters/node/index.js.map +0 -1
  333. package/lib/commonjs/adapters/node/storage.js +0 -163
  334. package/lib/commonjs/adapters/node/storage.js.map +0 -1
  335. package/lib/commonjs/core/identity-session/DeviceManager.js +0 -237
  336. package/lib/commonjs/core/identity-session/DeviceManager.js.map +0 -1
  337. package/lib/commonjs/core/identity-session/INTEGRATION_GUIDE.md +0 -287
  338. package/lib/commonjs/core/identity-session/IdentityManager.js +0 -400
  339. package/lib/commonjs/core/identity-session/IdentityManager.js.map +0 -1
  340. package/lib/commonjs/core/identity-session/IdentitySessionCore.js +0 -394
  341. package/lib/commonjs/core/identity-session/IdentitySessionCore.js.map +0 -1
  342. package/lib/commonjs/core/identity-session/RefreshManager.js +0 -137
  343. package/lib/commonjs/core/identity-session/RefreshManager.js.map +0 -1
  344. package/lib/commonjs/core/identity-session/SessionManager.js +0 -427
  345. package/lib/commonjs/core/identity-session/SessionManager.js.map +0 -1
  346. package/lib/commonjs/core/identity-session/createIdentitySessionCore.js +0 -24
  347. package/lib/commonjs/core/identity-session/createIdentitySessionCore.js.map +0 -1
  348. package/lib/commonjs/core/identity-session/errors.js +0 -176
  349. package/lib/commonjs/core/identity-session/errors.js.map +0 -1
  350. package/lib/commonjs/core/identity-session/index.js +0 -80
  351. package/lib/commonjs/core/identity-session/index.js.map +0 -1
  352. package/lib/commonjs/core/identity-session/types.js +0 -2
  353. package/lib/commonjs/core/identity-session/types.js.map +0 -1
  354. package/lib/commonjs/crypto/README.md +0 -142
  355. package/lib/commonjs/crypto/core.js +0 -147
  356. package/lib/commonjs/crypto/core.js.map +0 -1
  357. package/lib/commonjs/node/signatureService.js +0 -107
  358. package/lib/commonjs/node/signatureService.js.map +0 -1
  359. package/lib/commonjs/ui/hooks/auth/index.js +0 -37
  360. package/lib/commonjs/ui/hooks/auth/index.js.map +0 -1
  361. package/lib/commonjs/ui/hooks/auth/useUsernameValidation.js +0 -171
  362. package/lib/commonjs/ui/hooks/auth/useUsernameValidation.js.map +0 -1
  363. package/lib/commonjs/ui/hooks/useAvatarPicker.js +0 -52
  364. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +0 -1
  365. package/lib/commonjs/ui/hooks/useIdentityTransfer.js +0 -125
  366. package/lib/commonjs/ui/hooks/useIdentityTransfer.js.map +0 -1
  367. package/lib/commonjs/ui/hooks/useTransferCodesPersistence.js +0 -81
  368. package/lib/commonjs/ui/hooks/useTransferCodesPersistence.js.map +0 -1
  369. package/lib/commonjs/ui/hooks/useTransferQueries.js +0 -85
  370. package/lib/commonjs/ui/hooks/useTransferQueries.js.map +0 -1
  371. package/lib/commonjs/ui/stores/transferStore.js +0 -157
  372. package/lib/commonjs/ui/stores/transferStore.js.map +0 -1
  373. package/lib/module/adapters/expo/crypto.js +0 -51
  374. package/lib/module/adapters/expo/crypto.js.map +0 -1
  375. package/lib/module/adapters/expo/fetch.js +0 -26
  376. package/lib/module/adapters/expo/fetch.js.map +0 -1
  377. package/lib/module/adapters/expo/index.js +0 -45
  378. package/lib/module/adapters/expo/index.js.map +0 -1
  379. package/lib/module/adapters/expo/storage.js +0 -198
  380. package/lib/module/adapters/expo/storage.js.map +0 -1
  381. package/lib/module/adapters/index.js +0 -45
  382. package/lib/module/adapters/index.js.map +0 -1
  383. package/lib/module/adapters/node/crypto.js +0 -36
  384. package/lib/module/adapters/node/crypto.js.map +0 -1
  385. package/lib/module/adapters/node/fetch.js +0 -57
  386. package/lib/module/adapters/node/fetch.js.map +0 -1
  387. package/lib/module/adapters/node/index.js +0 -31
  388. package/lib/module/adapters/node/index.js.map +0 -1
  389. package/lib/module/adapters/node/storage.js +0 -159
  390. package/lib/module/adapters/node/storage.js.map +0 -1
  391. package/lib/module/core/identity-session/DeviceManager.js +0 -232
  392. package/lib/module/core/identity-session/DeviceManager.js.map +0 -1
  393. package/lib/module/core/identity-session/INTEGRATION_GUIDE.md +0 -287
  394. package/lib/module/core/identity-session/IdentityManager.js +0 -395
  395. package/lib/module/core/identity-session/IdentityManager.js.map +0 -1
  396. package/lib/module/core/identity-session/IdentitySessionCore.js +0 -390
  397. package/lib/module/core/identity-session/IdentitySessionCore.js.map +0 -1
  398. package/lib/module/core/identity-session/RefreshManager.js +0 -132
  399. package/lib/module/core/identity-session/RefreshManager.js.map +0 -1
  400. package/lib/module/core/identity-session/SessionManager.js +0 -422
  401. package/lib/module/core/identity-session/SessionManager.js.map +0 -1
  402. package/lib/module/core/identity-session/createIdentitySessionCore.js +0 -21
  403. package/lib/module/core/identity-session/createIdentitySessionCore.js.map +0 -1
  404. package/lib/module/core/identity-session/errors.js +0 -170
  405. package/lib/module/core/identity-session/errors.js.map +0 -1
  406. package/lib/module/core/identity-session/index.js +0 -17
  407. package/lib/module/core/identity-session/index.js.map +0 -1
  408. package/lib/module/core/identity-session/types.js +0 -2
  409. package/lib/module/core/identity-session/types.js.map +0 -1
  410. package/lib/module/crypto/README.md +0 -142
  411. package/lib/module/crypto/core.js +0 -133
  412. package/lib/module/crypto/core.js.map +0 -1
  413. package/lib/module/node/signatureService.js +0 -101
  414. package/lib/module/node/signatureService.js.map +0 -1
  415. package/lib/module/ui/hooks/auth/index.js +0 -7
  416. package/lib/module/ui/hooks/auth/index.js.map +0 -1
  417. package/lib/module/ui/hooks/auth/useUsernameValidation.js +0 -167
  418. package/lib/module/ui/hooks/auth/useUsernameValidation.js.map +0 -1
  419. package/lib/module/ui/hooks/useAvatarPicker.js +0 -48
  420. package/lib/module/ui/hooks/useAvatarPicker.js.map +0 -1
  421. package/lib/module/ui/hooks/useIdentityTransfer.js +0 -121
  422. package/lib/module/ui/hooks/useIdentityTransfer.js.map +0 -1
  423. package/lib/module/ui/hooks/useTransferCodesPersistence.js +0 -77
  424. package/lib/module/ui/hooks/useTransferCodesPersistence.js.map +0 -1
  425. package/lib/module/ui/hooks/useTransferQueries.js +0 -80
  426. package/lib/module/ui/hooks/useTransferQueries.js.map +0 -1
  427. package/lib/module/ui/stores/transferStore.js +0 -152
  428. package/lib/module/ui/stores/transferStore.js.map +0 -1
  429. package/lib/typescript/adapters/expo/crypto.d.ts +0 -17
  430. package/lib/typescript/adapters/expo/crypto.d.ts.map +0 -1
  431. package/lib/typescript/adapters/expo/fetch.d.ts +0 -16
  432. package/lib/typescript/adapters/expo/fetch.d.ts.map +0 -1
  433. package/lib/typescript/adapters/expo/index.d.ts +0 -23
  434. package/lib/typescript/adapters/expo/index.d.ts.map +0 -1
  435. package/lib/typescript/adapters/expo/storage.d.ts +0 -23
  436. package/lib/typescript/adapters/expo/storage.d.ts.map +0 -1
  437. package/lib/typescript/adapters/index.d.ts +0 -17
  438. package/lib/typescript/adapters/index.d.ts.map +0 -1
  439. package/lib/typescript/adapters/node/crypto.d.ts +0 -17
  440. package/lib/typescript/adapters/node/crypto.d.ts.map +0 -1
  441. package/lib/typescript/adapters/node/fetch.d.ts +0 -16
  442. package/lib/typescript/adapters/node/fetch.d.ts.map +0 -1
  443. package/lib/typescript/adapters/node/index.d.ts +0 -23
  444. package/lib/typescript/adapters/node/index.d.ts.map +0 -1
  445. package/lib/typescript/adapters/node/storage.d.ts +0 -23
  446. package/lib/typescript/adapters/node/storage.d.ts.map +0 -1
  447. package/lib/typescript/core/identity-session/DeviceManager.d.ts +0 -64
  448. package/lib/typescript/core/identity-session/DeviceManager.d.ts.map +0 -1
  449. package/lib/typescript/core/identity-session/IdentityManager.d.ts +0 -88
  450. package/lib/typescript/core/identity-session/IdentityManager.d.ts.map +0 -1
  451. package/lib/typescript/core/identity-session/IdentitySessionCore.d.ts +0 -141
  452. package/lib/typescript/core/identity-session/IdentitySessionCore.d.ts.map +0 -1
  453. package/lib/typescript/core/identity-session/RefreshManager.d.ts +0 -36
  454. package/lib/typescript/core/identity-session/RefreshManager.d.ts.map +0 -1
  455. package/lib/typescript/core/identity-session/SessionManager.d.ts +0 -104
  456. package/lib/typescript/core/identity-session/SessionManager.d.ts.map +0 -1
  457. package/lib/typescript/core/identity-session/createIdentitySessionCore.d.ts +0 -11
  458. package/lib/typescript/core/identity-session/createIdentitySessionCore.d.ts.map +0 -1
  459. package/lib/typescript/core/identity-session/errors.d.ts +0 -63
  460. package/lib/typescript/core/identity-session/errors.d.ts.map +0 -1
  461. package/lib/typescript/core/identity-session/index.d.ts +0 -14
  462. package/lib/typescript/core/identity-session/index.d.ts.map +0 -1
  463. package/lib/typescript/core/identity-session/types.d.ts +0 -196
  464. package/lib/typescript/core/identity-session/types.d.ts.map +0 -1
  465. package/lib/typescript/crypto/core.d.ts +0 -56
  466. package/lib/typescript/crypto/core.d.ts.map +0 -1
  467. package/lib/typescript/node/signatureService.d.ts +0 -55
  468. package/lib/typescript/node/signatureService.d.ts.map +0 -1
  469. package/lib/typescript/ui/hooks/auth/index.d.ts +0 -6
  470. package/lib/typescript/ui/hooks/auth/index.d.ts.map +0 -1
  471. package/lib/typescript/ui/hooks/auth/useUsernameValidation.d.ts +0 -32
  472. package/lib/typescript/ui/hooks/auth/useUsernameValidation.d.ts.map +0 -1
  473. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts +0 -18
  474. package/lib/typescript/ui/hooks/useAvatarPicker.d.ts.map +0 -1
  475. package/lib/typescript/ui/hooks/useIdentityTransfer.d.ts +0 -24
  476. package/lib/typescript/ui/hooks/useIdentityTransfer.d.ts.map +0 -1
  477. package/lib/typescript/ui/hooks/useTransferCodesPersistence.d.ts +0 -6
  478. package/lib/typescript/ui/hooks/useTransferCodesPersistence.d.ts.map +0 -1
  479. package/lib/typescript/ui/hooks/useTransferQueries.d.ts +0 -26
  480. package/lib/typescript/ui/hooks/useTransferQueries.d.ts.map +0 -1
  481. package/lib/typescript/ui/stores/transferStore.d.ts +0 -36
  482. package/lib/typescript/ui/stores/transferStore.d.ts.map +0 -1
  483. package/src/adapters/expo/crypto.ts +0 -55
  484. package/src/adapters/expo/fetch.ts +0 -28
  485. package/src/adapters/expo/index.ts +0 -51
  486. package/src/adapters/expo/storage.ts +0 -228
  487. package/src/adapters/index.ts +0 -48
  488. package/src/adapters/node/crypto.ts +0 -39
  489. package/src/adapters/node/fetch.ts +0 -59
  490. package/src/adapters/node/index.ts +0 -37
  491. package/src/adapters/node/storage.ts +0 -170
  492. package/src/core/identity-session/DeviceManager.ts +0 -273
  493. package/src/core/identity-session/INTEGRATION_GUIDE.md +0 -287
  494. package/src/core/identity-session/IdentityManager.ts +0 -474
  495. package/src/core/identity-session/IdentitySessionCore.ts +0 -464
  496. package/src/core/identity-session/RefreshManager.ts +0 -189
  497. package/src/core/identity-session/SessionManager.ts +0 -500
  498. package/src/core/identity-session/createIdentitySessionCore.ts +0 -19
  499. package/src/core/identity-session/errors.ts +0 -197
  500. package/src/core/identity-session/index.ts +0 -15
  501. package/src/core/identity-session/types.ts +0 -188
  502. package/src/crypto/README.md +0 -142
  503. package/src/crypto/__tests__/core.test.ts +0 -203
  504. package/src/crypto/core.ts +0 -142
  505. package/src/node/signatureService.ts +0 -126
  506. package/src/ui/hooks/auth/index.ts +0 -9
  507. package/src/ui/hooks/auth/useUsernameValidation.ts +0 -177
  508. package/src/ui/hooks/useAvatarPicker.ts +0 -62
  509. package/src/ui/hooks/useIdentityTransfer.ts +0 -135
  510. package/src/ui/hooks/useTransferCodesPersistence.ts +0 -80
  511. package/src/ui/hooks/useTransferQueries.ts +0 -102
  512. package/src/ui/stores/transferStore.ts +0 -201
@@ -0,0 +1,551 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useAuthOperations = void 0;
7
+ var _react = require("react");
8
+ var _deviceManager = require("../../../utils/deviceManager");
9
+ var _sessionHelpers = require("../../utils/sessionHelpers");
10
+ var _errorHandlers = require("../../utils/errorHandlers");
11
+ var _crypto = require("../../../crypto");
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
13
+ const LOGIN_ERROR_CODE = 'LOGIN_ERROR';
14
+ const REGISTER_ERROR_CODE = 'REGISTER_ERROR';
15
+ const LOGOUT_ERROR_CODE = 'LOGOUT_ERROR';
16
+ const LOGOUT_ALL_ERROR_CODE = 'LOGOUT_ALL_ERROR';
17
+
18
+ /**
19
+ * Authentication operations using public key cryptography.
20
+ * No passwords required - identity is based on ECDSA key pairs.
21
+ */
22
+ const useAuthOperations = ({
23
+ oxyServices,
24
+ storage,
25
+ sessions,
26
+ activeSessionId,
27
+ setActiveSessionId,
28
+ updateSessions,
29
+ saveActiveSessionId,
30
+ clearSessionState,
31
+ switchSession,
32
+ applyLanguagePreference,
33
+ onAuthStateChange,
34
+ onError,
35
+ loginSuccess,
36
+ loginFailure,
37
+ logoutStore,
38
+ setAuthState,
39
+ setIdentitySynced,
40
+ setSyncing,
41
+ logger
42
+ }) => {
43
+ /**
44
+ * Internal function to perform challenge-response sign in (works offline)
45
+ */
46
+ const performSignIn = (0, _react.useCallback)(async publicKey => {
47
+ const deviceFingerprintObj = _deviceManager.DeviceManager.getDeviceFingerprint();
48
+ const deviceFingerprint = JSON.stringify(deviceFingerprintObj);
49
+ const deviceInfo = await _deviceManager.DeviceManager.getDeviceInfo();
50
+ const deviceName = deviceInfo.deviceName || _deviceManager.DeviceManager.getDefaultDeviceName();
51
+ const USER_ID_STORAGE_KEY = 'oxy_user_id';
52
+
53
+ // Online-only sign-in: require backend availability
54
+ // First, resolve userId (prefer locally stored value)
55
+ let userId = null;
56
+ if (storage) {
57
+ userId = await storage.getItem(USER_ID_STORAGE_KEY);
58
+ }
59
+ if (!userId) {
60
+ const userLookup = await oxyServices.getUserByPublicKey(publicKey);
61
+ userId = userLookup.id;
62
+ if (storage && userId) {
63
+ await storage.setItem(USER_ID_STORAGE_KEY, userId).catch(() => {});
64
+ }
65
+ }
66
+ const challengeResponse = await oxyServices.requestChallenge(userId);
67
+ const challenge = challengeResponse.challenge;
68
+
69
+ // Note: Biometric authentication check should be handled by the app layer
70
+ // (e.g., accounts app) before calling signIn. The biometric preference is stored
71
+ // in local storage as 'oxy_biometric_enabled' and can be checked there.
72
+
73
+ // Sign the challenge
74
+ const {
75
+ challenge: signature,
76
+ timestamp
77
+ } = await _crypto.SignatureService.signChallenge(challenge);
78
+
79
+ // Online sign-in: use normal flow
80
+ if (!userId) {
81
+ throw new Error('User ID not found');
82
+ }
83
+
84
+ // Verify and create session using userId
85
+ const sessionResponse = await oxyServices.verifyChallenge(userId, challenge, signature, timestamp, deviceName, deviceFingerprint);
86
+
87
+ // Store tokens immediately (no extra round-trip)
88
+ oxyServices.setTokens(sessionResponse.accessToken, sessionResponse.refreshToken);
89
+
90
+ // Get full user data
91
+ const fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
92
+
93
+ // IMPORTANT: user.id should be MongoDB ObjectId, not publicKey
94
+ // The API should return the correct id (ObjectId) from the database
95
+ // If it doesn't, we need to fix the API, not work around it here
96
+ // Validate that id is ObjectId format (24 hex characters)
97
+ if (fullUser.id && !/^[0-9a-fA-F]{24}$/.test(fullUser.id)) {
98
+ console.warn('[useAuthOperations] User.id is not MongoDB ObjectId format:', {
99
+ id: fullUser.id.substring(0, 20),
100
+ publicKey: fullUser.publicKey.substring(0, 20),
101
+ message: 'API should return MongoDB ObjectId as user.id, not publicKey'
102
+ });
103
+ // Don't override - let the API fix this issue
104
+ }
105
+
106
+ // Fetch device sessions
107
+ let allDeviceSessions = [];
108
+ try {
109
+ allDeviceSessions = await (0, _sessionHelpers.fetchSessionsWithFallback)(oxyServices, sessionResponse.sessionId, {
110
+ fallbackDeviceId: sessionResponse.deviceId,
111
+ fallbackUserId: fullUser.id,
112
+ logger
113
+ });
114
+ } catch (error) {
115
+ if (__DEV__) {
116
+ console.warn('Failed to fetch device sessions after login:', error);
117
+ }
118
+ }
119
+
120
+ // Check for existing session for same user
121
+ const existingSession = allDeviceSessions.find(session => session.userId?.toString() === fullUser.id?.toString() && session.sessionId !== sessionResponse.sessionId);
122
+ if (existingSession) {
123
+ // Logout duplicate session
124
+ try {
125
+ await oxyServices.logoutSession(sessionResponse.sessionId, sessionResponse.sessionId);
126
+ } catch (logoutError) {
127
+ if (__DEV__) {
128
+ console.warn('Failed to logout duplicate session:', logoutError);
129
+ }
130
+ }
131
+ await switchSession(existingSession.sessionId);
132
+ updateSessions(allDeviceSessions.filter(session => session.sessionId !== sessionResponse.sessionId), {
133
+ merge: false
134
+ });
135
+ onAuthStateChange?.(fullUser);
136
+ return fullUser;
137
+ }
138
+ setActiveSessionId(sessionResponse.sessionId);
139
+ await saveActiveSessionId(sessionResponse.sessionId);
140
+ updateSessions(allDeviceSessions, {
141
+ merge: true
142
+ });
143
+ await applyLanguagePreference(fullUser);
144
+ loginSuccess(); // Services never caches profile - only tokens
145
+ onAuthStateChange?.(fullUser);
146
+ if (storage) {
147
+ await storage.setItem('oxy_identity_synced', 'true').catch(() => {});
148
+ }
149
+ setIdentitySynced(true);
150
+ return fullUser;
151
+ }, [applyLanguagePreference, logger, loginSuccess, onAuthStateChange, oxyServices, saveActiveSessionId, setActiveSessionId, setIdentitySynced, switchSession, updateSessions, storage]);
152
+
153
+ /**
154
+ * Create a new identity (offline-first)
155
+ * Identity is purely cryptographic - no username or email required
156
+ */
157
+ const createIdentity = (0, _react.useCallback)(async () => {
158
+ if (!storage) throw new Error('Storage not initialized');
159
+ setAuthState({
160
+ isLoading: true,
161
+ error: null
162
+ });
163
+ try {
164
+ // Generate new key pair directly (works offline)
165
+ const {
166
+ publicKey,
167
+ privateKey
168
+ } = await _crypto.KeyManager.generateKeyPair();
169
+ await _crypto.KeyManager.importKeyPair(privateKey);
170
+
171
+ // Mark as not synced
172
+ // Note: createIdentity only creates the key locally (offline-first)
173
+ // Registration with server (registerIdentity) must be done by the app (Accounts) with profile data
174
+ await storage.setItem('oxy_identity_synced', 'false');
175
+ setIdentitySynced(false);
176
+ return {
177
+ synced: false // Always false - registration must be done separately by Accounts app
178
+ };
179
+ } catch (error) {
180
+ // CRITICAL: Never delete identity on error - it may have been successfully created
181
+ // Only log the error and let the user recover using their backup file
182
+ // Identity deletion should ONLY happen when explicitly requested by the user
183
+ if (__DEV__ && logger) {
184
+ logger('Error during identity creation (identity may still exist):', error);
185
+ }
186
+
187
+ // Check if identity was actually created (keys exist)
188
+ const hasIdentity = await _crypto.KeyManager.hasIdentity().catch(() => false);
189
+ if (hasIdentity) {
190
+ // Identity exists - don't delete it! Just mark as not synced
191
+ await storage.setItem('oxy_identity_synced', 'false').catch(() => {});
192
+ setIdentitySynced(false);
193
+ if (__DEV__ && logger) {
194
+ logger('Identity was created but sync failed - user can sync later using backup file');
195
+ }
196
+ } else {
197
+ // No identity exists - this was a generation failure, safe to clean up sync flag
198
+ await storage.removeItem('oxy_identity_synced').catch(() => {});
199
+ setIdentitySynced(false);
200
+ }
201
+ const message = (0, _errorHandlers.handleAuthError)(error, {
202
+ defaultMessage: 'Failed to create identity',
203
+ code: REGISTER_ERROR_CODE,
204
+ onError,
205
+ setAuthError: msg => setAuthState({
206
+ error: msg
207
+ }),
208
+ logger
209
+ });
210
+ loginFailure(message);
211
+ throw error;
212
+ } finally {
213
+ setAuthState({
214
+ isLoading: false
215
+ });
216
+ }
217
+ }, [oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced]);
218
+
219
+ /**
220
+ * Check if identity is synced with server (reads from storage for persistence)
221
+ */
222
+ const isIdentitySyncedFn = (0, _react.useCallback)(async () => {
223
+ if (!storage) return true;
224
+ const synced = await storage.getItem('oxy_identity_synced');
225
+ const isSynced = synced !== 'false';
226
+ setIdentitySynced(isSynced);
227
+ return isSynced;
228
+ }, [storage, setIdentitySynced]);
229
+
230
+ /**
231
+ * Sync local identity with server (call when online)
232
+ * TanStack Query handles offline mutations automatically
233
+ */
234
+ const syncIdentity = (0, _react.useCallback)(async () => {
235
+ if (!storage) throw new Error('Storage not initialized');
236
+ setAuthState({
237
+ isLoading: true,
238
+ error: null
239
+ });
240
+ setSyncing(true);
241
+ try {
242
+ const publicKey = await _crypto.KeyManager.getPublicKey();
243
+ if (!publicKey) {
244
+ throw new Error('No identity found on this device');
245
+ }
246
+
247
+ // Check if already synced
248
+ const alreadySynced = await storage.getItem('oxy_identity_synced');
249
+ if (alreadySynced === 'true') {
250
+ setIdentitySynced(true);
251
+ return await performSignIn(publicKey);
252
+ }
253
+
254
+ // Check if already registered on server
255
+ const {
256
+ registered
257
+ } = await oxyServices.checkPublicKeyRegistered(publicKey);
258
+ if (!registered) {
259
+ // Identity is not registered - registration must be done by Accounts app with profile data
260
+ // syncIdentity only syncs already-registered identities
261
+ throw new Error('Identity is not registered. Please register your identity first using the Accounts app.');
262
+ }
263
+
264
+ // Mark as synced (Zustand store + storage)
265
+ await storage.setItem('oxy_identity_synced', 'true');
266
+ setIdentitySynced(true);
267
+
268
+ // Sign in (Services never caches profile - only tokens)
269
+ const user = await performSignIn(publicKey);
270
+
271
+ // Check if user has username - required for syncing
272
+ if (!user.username) {
273
+ const usernameError = new Error('USERNAME_REQUIRED');
274
+ usernameError.code = 'USERNAME_REQUIRED';
275
+ throw usernameError;
276
+ }
277
+
278
+ // TanStack Query will automatically retry any pending mutations
279
+
280
+ return user;
281
+ } catch (error) {
282
+ const message = (0, _errorHandlers.handleAuthError)(error, {
283
+ defaultMessage: 'Failed to sync identity',
284
+ code: REGISTER_ERROR_CODE,
285
+ onError,
286
+ setAuthError: msg => setAuthState({
287
+ error: msg
288
+ }),
289
+ logger
290
+ });
291
+ loginFailure(message);
292
+ throw error;
293
+ } finally {
294
+ setAuthState({
295
+ isLoading: false
296
+ });
297
+ setSyncing(false);
298
+ }
299
+ }, [oxyServices, storage, setAuthState, performSignIn, loginFailure, onError, logger, setSyncing, setIdentitySynced]);
300
+
301
+ /**
302
+ * Import identity from backup file data (offline-first)
303
+ */
304
+ const importIdentity = (0, _react.useCallback)(async (backupData, password) => {
305
+ if (!storage) throw new Error('Storage not initialized');
306
+
307
+ // Validate arguments - ensure backupData is an object, not a string (old signature)
308
+ if (!backupData || typeof backupData !== 'object' || Array.isArray(backupData)) {
309
+ throw new Error('Invalid backup data. Please use the backup file import feature.');
310
+ }
311
+ if (!backupData.encrypted || !backupData.salt || !backupData.iv || !backupData.publicKey) {
312
+ throw new Error('Invalid backup data structure. Missing required fields.');
313
+ }
314
+ if (!password || typeof password !== 'string') {
315
+ throw new Error('Password is required for backup file import.');
316
+ }
317
+ setAuthState({
318
+ isLoading: true,
319
+ error: null
320
+ });
321
+ try {
322
+ // Decrypt private key from backup data
323
+ const Crypto = await Promise.resolve().then(() => _interopRequireWildcard(require('expo-crypto')));
324
+
325
+ // Convert hex strings to Uint8Array
326
+ const saltBytes = new Uint8Array(backupData.salt.match(/.{1,2}/g)?.map(byte => parseInt(byte, 16)) || []);
327
+ const ivBytes = new Uint8Array(backupData.iv.match(/.{1,2}/g)?.map(byte => parseInt(byte, 16)) || []);
328
+
329
+ // Derive key from password (same algorithm as EncryptedBackupGenerator)
330
+ const saltHex = Array.from(saltBytes).map(b => b.toString(16).padStart(2, '0')).join('');
331
+ let key = password + saltHex;
332
+ for (let i = 0; i < 10000; i++) {
333
+ key = await Crypto.digestStringAsync(Crypto.CryptoDigestAlgorithm.SHA256, key);
334
+ }
335
+ const keyBytes = new Uint8Array(32);
336
+ for (let i = 0; i < 64 && i < key.length; i += 2) {
337
+ keyBytes[i / 2] = parseInt(key.substring(i, i + 2), 16);
338
+ }
339
+
340
+ // Decrypt private key (XOR decryption - same as encryption)
341
+ const encryptedBytes = Buffer.from(backupData.encrypted, 'base64');
342
+ const decryptedBytes = new Uint8Array(encryptedBytes.length);
343
+ for (let i = 0; i < encryptedBytes.length; i++) {
344
+ decryptedBytes[i] = encryptedBytes[i] ^ keyBytes[i % keyBytes.length] ^ ivBytes[i % ivBytes.length];
345
+ }
346
+ const privateKey = new TextDecoder().decode(decryptedBytes);
347
+
348
+ // Import the key pair
349
+ const publicKey = await _crypto.KeyManager.importKeyPair(privateKey);
350
+
351
+ // Verify public key matches
352
+ if (publicKey !== backupData.publicKey) {
353
+ throw new Error('Backup file is corrupted or password is incorrect');
354
+ }
355
+
356
+ // Mark as not synced
357
+ await storage.setItem('oxy_identity_synced', 'false');
358
+ setIdentitySynced(false);
359
+
360
+ // Try to sync with server
361
+ try {
362
+ // Check if this identity is already registered
363
+ const {
364
+ registered
365
+ } = await oxyServices.checkPublicKeyRegistered(publicKey);
366
+ if (registered) {
367
+ // Identity exists, mark as synced
368
+ await storage.setItem('oxy_identity_synced', 'true');
369
+ setIdentitySynced(true);
370
+ return {
371
+ synced: true
372
+ };
373
+ } else {
374
+ // Identity is not registered - registration must be done by Accounts app with profile data
375
+ // importIdentity only imports already-registered identities
376
+ await storage.setItem('oxy_identity_synced', 'false');
377
+ setIdentitySynced(false);
378
+ return {
379
+ synced: false
380
+ };
381
+ }
382
+ } catch (syncError) {
383
+ // Offline - identity restored locally but not synced
384
+ if (__DEV__) {
385
+ console.log('[Auth] Identity imported locally, will sync when online:', syncError);
386
+ }
387
+ return {
388
+ synced: false
389
+ };
390
+ }
391
+ } catch (error) {
392
+ const message = (0, _errorHandlers.handleAuthError)(error, {
393
+ defaultMessage: 'Failed to import identity. Please check your password and backup file.',
394
+ code: REGISTER_ERROR_CODE,
395
+ onError,
396
+ setAuthError: msg => setAuthState({
397
+ error: msg
398
+ }),
399
+ logger
400
+ });
401
+ loginFailure(message);
402
+ throw error;
403
+ } finally {
404
+ setAuthState({
405
+ isLoading: false
406
+ });
407
+ }
408
+ }, [oxyServices, storage, setAuthState, loginFailure, onError, logger, setIdentitySynced]);
409
+
410
+ /**
411
+ * Sign in with existing identity on device
412
+ */
413
+ const signIn = (0, _react.useCallback)(async deviceName => {
414
+ if (!storage) throw new Error('Storage not initialized');
415
+ setAuthState({
416
+ isLoading: true,
417
+ error: null
418
+ });
419
+ try {
420
+ // Get stored public key
421
+ const publicKey = await _crypto.KeyManager.getPublicKey();
422
+ if (!publicKey) {
423
+ throw new Error('No identity found on this device. Please create or import an identity.');
424
+ }
425
+
426
+ // Ensure identity is registered before attempting sign-in
427
+ const {
428
+ registered
429
+ } = await oxyServices.checkPublicKeyRegistered(publicKey);
430
+ if (!registered) {
431
+ throw new Error('Identity is not registered. Please register your identity in the Accounts app before signing in.');
432
+ }
433
+ return await performSignIn(publicKey);
434
+ } catch (error) {
435
+ const message = (0, _errorHandlers.handleAuthError)(error, {
436
+ defaultMessage: 'Sign in failed',
437
+ code: LOGIN_ERROR_CODE,
438
+ onError,
439
+ setAuthError: msg => setAuthState({
440
+ error: msg
441
+ }),
442
+ logger
443
+ });
444
+ loginFailure(message);
445
+ throw error;
446
+ } finally {
447
+ setAuthState({
448
+ isLoading: false
449
+ });
450
+ }
451
+ }, [storage, setAuthState, performSignIn, loginFailure, onError, logger, oxyServices]);
452
+
453
+ /**
454
+ * Logout from session
455
+ */
456
+ const logout = (0, _react.useCallback)(async targetSessionId => {
457
+ if (!activeSessionId) return;
458
+ try {
459
+ const sessionToLogout = targetSessionId || activeSessionId;
460
+ await oxyServices.logoutSession(activeSessionId, sessionToLogout);
461
+ const filteredSessions = sessions.filter(session => session.sessionId !== sessionToLogout);
462
+ updateSessions(filteredSessions, {
463
+ merge: false
464
+ });
465
+ if (sessionToLogout === activeSessionId) {
466
+ if (filteredSessions.length > 0) {
467
+ await switchSession(filteredSessions[0].sessionId);
468
+ } else {
469
+ await clearSessionState();
470
+ return;
471
+ }
472
+ }
473
+ } catch (error) {
474
+ const isInvalid = (0, _errorHandlers.isInvalidSessionError)(error);
475
+ if (isInvalid && targetSessionId === activeSessionId) {
476
+ await clearSessionState();
477
+ return;
478
+ }
479
+ (0, _errorHandlers.handleAuthError)(error, {
480
+ defaultMessage: 'Logout failed',
481
+ code: LOGOUT_ERROR_CODE,
482
+ onError,
483
+ setAuthError: msg => setAuthState({
484
+ error: msg
485
+ }),
486
+ logger,
487
+ status: isInvalid ? 401 : undefined
488
+ });
489
+ }
490
+ }, [activeSessionId, clearSessionState, logger, onError, oxyServices, sessions, setAuthState, switchSession, updateSessions]);
491
+
492
+ /**
493
+ * Logout from all sessions
494
+ */
495
+ const logoutAll = (0, _react.useCallback)(async () => {
496
+ if (!activeSessionId) {
497
+ const error = new Error('No active session found');
498
+ setAuthState({
499
+ error: error.message
500
+ });
501
+ onError?.({
502
+ message: error.message,
503
+ code: LOGOUT_ALL_ERROR_CODE,
504
+ status: 404
505
+ });
506
+ throw error;
507
+ }
508
+ try {
509
+ await oxyServices.logoutAllSessions(activeSessionId);
510
+ await clearSessionState();
511
+ } catch (error) {
512
+ (0, _errorHandlers.handleAuthError)(error, {
513
+ defaultMessage: 'Logout all failed',
514
+ code: LOGOUT_ALL_ERROR_CODE,
515
+ onError,
516
+ setAuthError: msg => setAuthState({
517
+ error: msg
518
+ }),
519
+ logger
520
+ });
521
+ throw error instanceof Error ? error : new Error('Logout all failed');
522
+ }
523
+ }, [activeSessionId, clearSessionState, logger, onError, oxyServices, setAuthState]);
524
+
525
+ /**
526
+ * Check if device has an identity stored
527
+ */
528
+ const hasIdentity = (0, _react.useCallback)(async () => {
529
+ return _crypto.KeyManager.hasIdentity();
530
+ }, []);
531
+
532
+ /**
533
+ * Get the public key of the stored identity
534
+ */
535
+ const getPublicKey = (0, _react.useCallback)(async () => {
536
+ return _crypto.KeyManager.getPublicKey();
537
+ }, []);
538
+ return {
539
+ createIdentity,
540
+ importIdentity,
541
+ signIn,
542
+ logout,
543
+ logoutAll,
544
+ hasIdentity,
545
+ getPublicKey,
546
+ isIdentitySynced: isIdentitySyncedFn,
547
+ syncIdentity
548
+ };
549
+ };
550
+ exports.useAuthOperations = useAuthOperations;
551
+ //# sourceMappingURL=useAuthOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_deviceManager","_sessionHelpers","_errorHandlers","_crypto","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LOGIN_ERROR_CODE","REGISTER_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","setIdentitySynced","setSyncing","logger","performSignIn","useCallback","publicKey","deviceFingerprintObj","DeviceManager","getDeviceFingerprint","deviceFingerprint","JSON","stringify","deviceInfo","getDeviceInfo","deviceName","getDefaultDeviceName","USER_ID_STORAGE_KEY","userId","getItem","userLookup","getUserByPublicKey","id","setItem","catch","challengeResponse","requestChallenge","challenge","signature","timestamp","SignatureService","signChallenge","Error","sessionResponse","verifyChallenge","setTokens","accessToken","refreshToken","fullUser","getUserBySession","sessionId","test","console","warn","substring","message","allDeviceSessions","fetchSessionsWithFallback","fallbackDeviceId","deviceId","fallbackUserId","error","__DEV__","existingSession","find","session","toString","logoutSession","logoutError","filter","merge","createIdentity","isLoading","privateKey","KeyManager","generateKeyPair","importKeyPair","synced","hasIdentity","removeItem","handleAuthError","defaultMessage","code","setAuthError","msg","isIdentitySyncedFn","isSynced","syncIdentity","getPublicKey","alreadySynced","registered","checkPublicKeyRegistered","user","username","usernameError","importIdentity","backupData","password","Array","isArray","encrypted","salt","iv","Crypto","Promise","resolve","then","saltBytes","Uint8Array","match","map","byte","parseInt","ivBytes","saltHex","from","b","padStart","join","key","digestStringAsync","CryptoDigestAlgorithm","SHA256","keyBytes","length","encryptedBytes","Buffer","decryptedBytes","TextDecoder","decode","syncError","log","signIn","logout","targetSessionId","sessionToLogout","filteredSessions","isInvalid","isInvalidSessionError","status","undefined","logoutAll","logoutAllSessions","isIdentitySynced","exports"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useAuthOperations.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAIA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AAGA,IAAAI,OAAA,GAAAJ,OAAA;AAAgF,SAAAK,wBAAAC,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAH,uBAAA,YAAAA,CAAAC,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AA8ChF,MAAMkB,gBAAgB,GAAG,aAAa;AACtC,MAAMC,mBAAmB,GAAG,gBAAgB;AAC5C,MAAMC,iBAAiB,GAAG,cAAc;AACxC,MAAMC,qBAAqB,GAAG,kBAAkB;;AAEhD;AACA;AACA;AACA;AACO,MAAMC,iBAAiB,GAAGA,CAAC;EAChCC,WAAW;EACXC,OAAO;EACPC,QAAQ;EACRC,eAAe;EACfC,kBAAkB;EAClBC,cAAc;EACdC,mBAAmB;EACnBC,iBAAiB;EACjBC,aAAa;EACbC,uBAAuB;EACvBC,iBAAiB;EACjBC,OAAO;EACPC,YAAY;EACZC,YAAY;EACZC,WAAW;EACTC,YAAY;EACZC,iBAAiB;EACjBC,UAAU;EACVC;AACsB,CAAC,KAA8B;EAEvD;AACF;AACA;EACE,MAAMC,aAAa,GAAG,IAAAC,kBAAW,EAC/B,MAAOC,SAAiB,IAAoB;IAC1C,MAAMC,oBAAoB,GAAGC,4BAAa,CAACC,oBAAoB,CAAC,CAAC;IACjE,MAAMC,iBAAiB,GAAGC,IAAI,CAACC,SAAS,CAACL,oBAAoB,CAAC;IAC9D,MAAMM,UAAU,GAAG,MAAML,4BAAa,CAACM,aAAa,CAAC,CAAC;IACtD,MAAMC,UAAU,GAAGF,UAAU,CAACE,UAAU,IAAIP,4BAAa,CAACQ,oBAAoB,CAAC,CAAC;IAChF,MAAMC,mBAAmB,GAAG,aAAa;;IAEzC;IACA;IACA,IAAIC,MAAqB,GAAG,IAAI;IAChC,IAAIhC,OAAO,EAAE;MACXgC,MAAM,GAAG,MAAMhC,OAAO,CAACiC,OAAO,CAACF,mBAAmB,CAAC;IACrD;IAEA,IAAI,CAACC,MAAM,EAAE;MACX,MAAME,UAAU,GAAG,MAAMnC,WAAW,CAACoC,kBAAkB,CAACf,SAAS,CAAC;MAClEY,MAAM,GAAGE,UAAU,CAACE,EAAE;MACtB,IAAIpC,OAAO,IAAIgC,MAAM,EAAE;QACrB,MAAMhC,OAAO,CAACqC,OAAO,CAACN,mBAAmB,EAAEC,MAAM,CAAC,CAACM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MACpE;IACF;IAEA,MAAMC,iBAAiB,GAAG,MAAMxC,WAAW,CAACyC,gBAAgB,CAACR,MAAM,CAAC;IACpE,MAAMS,SAAS,GAAGF,iBAAiB,CAACE,SAAS;;IAE7C;IACA;IACA;;IAEA;IACA,MAAM;MAAEA,SAAS,EAAEC,SAAS;MAAEC;IAAU,CAAC,GAAG,MAAMC,wBAAgB,CAACC,aAAa,CAACJ,SAAS,CAAC;;IAE3F;IACA,IAAI,CAACT,MAAM,EAAE;MACX,MAAM,IAAIc,KAAK,CAAC,mBAAmB,CAAC;IACtC;;IAEA;IACA,MAAMC,eAAe,GAAG,MAAMhD,WAAW,CAACiD,eAAe,CACvDhB,MAAM,EACNS,SAAS,EACTC,SAAS,EACTC,SAAS,EACTd,UAAU,EACVL,iBACF,CAAC;;IAED;IACAzB,WAAW,CAACkD,SAAS,CAACF,eAAe,CAACG,WAAW,EAAEH,eAAe,CAACI,YAAY,CAAC;;IAEhF;IACA,MAAMC,QAAQ,GAAG,MAAMrD,WAAW,CAACsD,gBAAgB,CAACN,eAAe,CAACO,SAAS,CAAC;;IAE9E;IACA;IACA;IACA;IACA,IAAIF,QAAQ,CAAChB,EAAE,IAAI,CAAC,mBAAmB,CAACmB,IAAI,CAACH,QAAQ,CAAChB,EAAE,CAAC,EAAE;MACzDoB,OAAO,CAACC,IAAI,CAAC,6DAA6D,EAAE;QAC1ErB,EAAE,EAAEgB,QAAQ,CAAChB,EAAE,CAACsB,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAChCtC,SAAS,EAAEgC,QAAQ,CAAChC,SAAS,CAACsC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9CC,OAAO,EAAE;MACX,CAAC,CAAC;MACF;IACF;;IAEA;IACA,IAAIC,iBAAkC,GAAG,EAAE;IAC3C,IAAI;MACFA,iBAAiB,GAAG,MAAM,IAAAC,yCAAyB,EAAC9D,WAAW,EAAEgD,eAAe,CAACO,SAAS,EAAE;QAC1FQ,gBAAgB,EAAEf,eAAe,CAACgB,QAAQ;QAC1CC,cAAc,EAAEZ,QAAQ,CAAChB,EAAE;QAC3BnB;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOgD,KAAK,EAAE;MACd,IAAIC,OAAO,EAAE;QACXV,OAAO,CAACC,IAAI,CAAC,8CAA8C,EAAEQ,KAAK,CAAC;MACrE;IACF;;IAEA;IACA,MAAME,eAAe,GAAGP,iBAAiB,CAACQ,IAAI,CAC3CC,OAAO,IACNA,OAAO,CAACrC,MAAM,EAAEsC,QAAQ,CAAC,CAAC,KAAKlB,QAAQ,CAAChB,EAAE,EAAEkC,QAAQ,CAAC,CAAC,IACtDD,OAAO,CAACf,SAAS,KAAKP,eAAe,CAACO,SAC1C,CAAC;IAED,IAAIa,eAAe,EAAE;MACnB;MACA,IAAI;QACF,MAAMpE,WAAW,CAACwE,aAAa,CAACxB,eAAe,CAACO,SAAS,EAAEP,eAAe,CAACO,SAAS,CAAC;MACvF,CAAC,CAAC,OAAOkB,WAAW,EAAE;QACpB,IAAIN,OAAO,EAAE;UACXV,OAAO,CAACC,IAAI,CAAC,qCAAqC,EAAEe,WAAW,CAAC;QAClE;MACF;MACA,MAAMjE,aAAa,CAAC4D,eAAe,CAACb,SAAS,CAAC;MAC9ClD,cAAc,CACZwD,iBAAiB,CAACa,MAAM,CAAEJ,OAAO,IAAKA,OAAO,CAACf,SAAS,KAAKP,eAAe,CAACO,SAAS,CAAC,EACtF;QAAEoB,KAAK,EAAE;MAAM,CACjB,CAAC;MACDjE,iBAAiB,GAAG2C,QAAQ,CAAC;MAC7B,OAAOA,QAAQ;IACjB;IAEAjD,kBAAkB,CAAC4C,eAAe,CAACO,SAAS,CAAC;IAC7C,MAAMjD,mBAAmB,CAAC0C,eAAe,CAACO,SAAS,CAAC;IACpDlD,cAAc,CAACwD,iBAAiB,EAAE;MAAEc,KAAK,EAAE;IAAK,CAAC,CAAC;IAElD,MAAMlE,uBAAuB,CAAC4C,QAAQ,CAAC;IACvCzC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChBF,iBAAiB,GAAG2C,QAAQ,CAAC;IAC7B,IAAIpD,OAAO,EAAE;MACX,MAAMA,OAAO,CAACqC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAACC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE;IACAvB,iBAAiB,CAAC,IAAI,CAAC;IAEvB,OAAOqC,QAAQ;EACjB,CAAC,EACD,CACE5C,uBAAuB,EACvBS,MAAM,EACNN,YAAY,EACZF,iBAAiB,EACjBV,WAAW,EACXM,mBAAmB,EACnBF,kBAAkB,EAClBY,iBAAiB,EACjBR,aAAa,EACbH,cAAc,EACdJ,OAAO,CAEX,CAAC;;EAED;AACF;AACA;AACA;EACE,MAAM2E,cAAc,GAAG,IAAAxD,kBAAW,EAChC,YAA0C;IACxC,IAAI,CAACnB,OAAO,EAAE,MAAM,IAAI8C,KAAK,CAAC,yBAAyB,CAAC;IAExDhC,YAAY,CAAC;MAAE8D,SAAS,EAAE,IAAI;MAAEX,KAAK,EAAE;IAAK,CAAC,CAAC;IAE9C,IAAI;MACF;MACA,MAAM;QAAE7C,SAAS;QAAEyD;MAAW,CAAC,GAAG,MAAMC,kBAAU,CAACC,eAAe,CAAC,CAAC;MACpE,MAAMD,kBAAU,CAACE,aAAa,CAACH,UAAU,CAAC;;MAE1C;MACA;MACA;MACA,MAAM7E,OAAO,CAACqC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC;MACrDtB,iBAAiB,CAAC,KAAK,CAAC;MAExB,OAAO;QACLkE,MAAM,EAAE,KAAK,CAAE;MACjB,CAAC;IACH,CAAC,CAAC,OAAOhB,KAAK,EAAE;MACd;MACA;MACA;MACA,IAAIC,OAAO,IAAIjD,MAAM,EAAE;QACrBA,MAAM,CAAC,4DAA4D,EAAEgD,KAAK,CAAC;MAC7E;;MAEA;MACA,MAAMiB,WAAW,GAAG,MAAMJ,kBAAU,CAACI,WAAW,CAAC,CAAC,CAAC5C,KAAK,CAAC,MAAM,KAAK,CAAC;MACrE,IAAI4C,WAAW,EAAE;QACf;QACA,MAAMlF,OAAO,CAACqC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAACC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACrEvB,iBAAiB,CAAC,KAAK,CAAC;QACxB,IAAImD,OAAO,IAAIjD,MAAM,EAAE;UACrBA,MAAM,CAAC,8EAA8E,CAAC;QACxF;MACF,CAAC,MAAM;QACL;QACA,MAAMjB,OAAO,CAACmF,UAAU,CAAC,qBAAqB,CAAC,CAAC7C,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/DvB,iBAAiB,CAAC,KAAK,CAAC;MAC1B;MAEA,MAAM4C,OAAO,GAAG,IAAAyB,8BAAe,EAACnB,KAAK,EAAE;QACrCoB,cAAc,EAAE,2BAA2B;QAC3CC,IAAI,EAAE3F,mBAAmB;QACzBe,OAAO;QACP6E,YAAY,EAAGC,GAAW,IAAK1E,YAAY,CAAC;UAAEmD,KAAK,EAAEuB;QAAI,CAAC,CAAC;QAC3DvE;MACF,CAAC,CAAC;MACFL,YAAY,CAAC+C,OAAO,CAAC;MACrB,MAAMM,KAAK;IACb,CAAC,SAAS;MACRnD,YAAY,CAAC;QAAE8D,SAAS,EAAE;MAAM,CAAC,CAAC;IACpC;EACF,CAAC,EACD,CAAC7E,WAAW,EAAEC,OAAO,EAAEc,YAAY,EAAEF,YAAY,EAAEF,OAAO,EAAEO,MAAM,EAAEF,iBAAiB,CACvF,CAAC;;EAED;AACF;AACA;EACE,MAAM0E,kBAAkB,GAAG,IAAAtE,kBAAW,EAAC,YAA8B;IACnE,IAAI,CAACnB,OAAO,EAAE,OAAO,IAAI;IACzB,MAAMiF,MAAM,GAAG,MAAMjF,OAAO,CAACiC,OAAO,CAAC,qBAAqB,CAAC;IAC3D,MAAMyD,QAAQ,GAAGT,MAAM,KAAK,OAAO;IACnClE,iBAAiB,CAAC2E,QAAQ,CAAC;IAC3B,OAAOA,QAAQ;EACjB,CAAC,EAAE,CAAC1F,OAAO,EAAEe,iBAAiB,CAAC,CAAC;;EAEhC;AACF;AACA;AACA;EACE,MAAM4E,YAAY,GAAG,IAAAxE,kBAAW,EAC9B,YAA2B;IACzB,IAAI,CAACnB,OAAO,EAAE,MAAM,IAAI8C,KAAK,CAAC,yBAAyB,CAAC;IAExDhC,YAAY,CAAC;MAAE8D,SAAS,EAAE,IAAI;MAAEX,KAAK,EAAE;IAAK,CAAC,CAAC;IAC9CjD,UAAU,CAAC,IAAI,CAAC;IAEhB,IAAI;MACF,MAAMI,SAAS,GAAG,MAAM0D,kBAAU,CAACc,YAAY,CAAC,CAAC;MACjD,IAAI,CAACxE,SAAS,EAAE;QACd,MAAM,IAAI0B,KAAK,CAAC,kCAAkC,CAAC;MACrD;;MAEA;MACA,MAAM+C,aAAa,GAAG,MAAM7F,OAAO,CAACiC,OAAO,CAAC,qBAAqB,CAAC;MAClE,IAAI4D,aAAa,KAAK,MAAM,EAAE;QAC5B9E,iBAAiB,CAAC,IAAI,CAAC;QACvB,OAAO,MAAMG,aAAa,CAACE,SAAS,CAAC;MACvC;;MAEA;MACA,MAAM;QAAE0E;MAAW,CAAC,GAAG,MAAM/F,WAAW,CAACgG,wBAAwB,CAAC3E,SAAS,CAAC;MAE5E,IAAI,CAAC0E,UAAU,EAAE;QACf;QACA;QACA,MAAM,IAAIhD,KAAK,CAAC,yFAAyF,CAAC;MAC5G;;MAEA;MACA,MAAM9C,OAAO,CAACqC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;MACpDtB,iBAAiB,CAAC,IAAI,CAAC;;MAEvB;MACA,MAAMiF,IAAI,GAAG,MAAM9E,aAAa,CAACE,SAAS,CAAC;;MAE3C;MACA,IAAI,CAAC4E,IAAI,CAACC,QAAQ,EAAE;QAClB,MAAMC,aAAa,GAAG,IAAIpD,KAAK,CAAC,mBAAmB,CAAC;QACnDoD,aAAa,CAASZ,IAAI,GAAG,mBAAmB;QACjD,MAAMY,aAAa;MACrB;;MAEA;;MAEA,OAAOF,IAAI;IACb,CAAC,CAAC,OAAO/B,KAAK,EAAE;MACd,MAAMN,OAAO,GAAG,IAAAyB,8BAAe,EAACnB,KAAK,EAAE;QACrCoB,cAAc,EAAE,yBAAyB;QACzCC,IAAI,EAAE3F,mBAAmB;QACzBe,OAAO;QACP6E,YAAY,EAAGC,GAAW,IAAK1E,YAAY,CAAC;UAAEmD,KAAK,EAAEuB;QAAI,CAAC,CAAC;QAC3DvE;MACF,CAAC,CAAC;MACFL,YAAY,CAAC+C,OAAO,CAAC;MACrB,MAAMM,KAAK;IACb,CAAC,SAAS;MACRnD,YAAY,CAAC;QAAE8D,SAAS,EAAE;MAAM,CAAC,CAAC;MAClC5D,UAAU,CAAC,KAAK,CAAC;IACnB;EACF,CAAC,EACD,CAACjB,WAAW,EAAEC,OAAO,EAAEc,YAAY,EAAEI,aAAa,EAAEN,YAAY,EAAEF,OAAO,EAAEO,MAAM,EAAED,UAAU,EAAED,iBAAiB,CAClH,CAAC;;EAED;AACF;AACA;EACE,MAAMoF,cAAc,GAAG,IAAAhF,kBAAW,EAChC,OAAOiF,UAAsB,EAAEC,QAAgB,KAAmC;IAChF,IAAI,CAACrG,OAAO,EAAE,MAAM,IAAI8C,KAAK,CAAC,yBAAyB,CAAC;;IAExD;IACA,IAAI,CAACsD,UAAU,IAAI,OAAOA,UAAU,KAAK,QAAQ,IAAIE,KAAK,CAACC,OAAO,CAACH,UAAU,CAAC,EAAE;MAC9E,MAAM,IAAItD,KAAK,CAAC,iEAAiE,CAAC;IACpF;IAEA,IAAI,CAACsD,UAAU,CAACI,SAAS,IAAI,CAACJ,UAAU,CAACK,IAAI,IAAI,CAACL,UAAU,CAACM,EAAE,IAAI,CAACN,UAAU,CAAChF,SAAS,EAAE;MACxF,MAAM,IAAI0B,KAAK,CAAC,yDAAyD,CAAC;IAC5E;IAEA,IAAI,CAACuD,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;MAC7C,MAAM,IAAIvD,KAAK,CAAC,8CAA8C,CAAC;IACjE;IAEAhC,YAAY,CAAC;MAAE8D,SAAS,EAAE,IAAI;MAAEX,KAAK,EAAE;IAAK,CAAC,CAAC;IAE9C,IAAI;MACF;MACA,MAAM0C,MAAM,GAAG,MAAAC,OAAA,CAAAC,OAAA,GAAAC,IAAA,OAAAxI,uBAAA,CAAAL,OAAA,CAAa,aAAa,GAAC;;MAE1C;MACA,MAAM8I,SAAS,GAAG,IAAIC,UAAU,CAC9BZ,UAAU,CAACK,IAAI,CAACQ,KAAK,CAAC,SAAS,CAAC,EAAEC,GAAG,CAACC,IAAI,IAAIC,QAAQ,CAACD,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EACvE,CAAC;MACD,MAAME,OAAO,GAAG,IAAIL,UAAU,CAC5BZ,UAAU,CAACM,EAAE,CAACO,KAAK,CAAC,SAAS,CAAC,EAAEC,GAAG,CAACC,IAAI,IAAIC,QAAQ,CAACD,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EACrE,CAAC;;MAED;MACA,MAAMG,OAAO,GAAGhB,KAAK,CAACiB,IAAI,CAACR,SAAS,CAAC,CAACG,GAAG,CAACM,CAAC,IAAIA,CAAC,CAAClD,QAAQ,CAAC,EAAE,CAAC,CAACmD,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAAC;MACxF,IAAIC,GAAG,GAAGtB,QAAQ,GAAGiB,OAAO;MAC5B,KAAK,IAAIxI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,KAAK,EAAEA,CAAC,EAAE,EAAE;QAC9B6I,GAAG,GAAG,MAAMhB,MAAM,CAACiB,iBAAiB,CAClCjB,MAAM,CAACkB,qBAAqB,CAACC,MAAM,EACnCH,GACF,CAAC;MACH;MACA,MAAMI,QAAQ,GAAG,IAAIf,UAAU,CAAC,EAAE,CAAC;MACnC,KAAK,IAAIlI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,IAAIA,CAAC,GAAG6I,GAAG,CAACK,MAAM,EAAElJ,CAAC,IAAI,CAAC,EAAE;QAChDiJ,QAAQ,CAACjJ,CAAC,GAAG,CAAC,CAAC,GAAGsI,QAAQ,CAACO,GAAG,CAACjE,SAAS,CAAC5E,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;MACzD;;MAEA;MACA,MAAMmJ,cAAc,GAAGC,MAAM,CAACX,IAAI,CAACnB,UAAU,CAACI,SAAS,EAAE,QAAQ,CAAC;MAClE,MAAM2B,cAAc,GAAG,IAAInB,UAAU,CAACiB,cAAc,CAACD,MAAM,CAAC;MAC5D,KAAK,IAAIlJ,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmJ,cAAc,CAACD,MAAM,EAAElJ,CAAC,EAAE,EAAE;QAC9CqJ,cAAc,CAACrJ,CAAC,CAAC,GAAGmJ,cAAc,CAACnJ,CAAC,CAAC,GAAGiJ,QAAQ,CAACjJ,CAAC,GAAGiJ,QAAQ,CAACC,MAAM,CAAC,GAAGX,OAAO,CAACvI,CAAC,GAAGuI,OAAO,CAACW,MAAM,CAAC;MACrG;MACA,MAAMnD,UAAU,GAAG,IAAIuD,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,cAAc,CAAC;;MAE3D;MACA,MAAM/G,SAAS,GAAG,MAAM0D,kBAAU,CAACE,aAAa,CAACH,UAAU,CAAC;;MAE5D;MACA,IAAIzD,SAAS,KAAKgF,UAAU,CAAChF,SAAS,EAAE;QACtC,MAAM,IAAI0B,KAAK,CAAC,mDAAmD,CAAC;MACtE;;MAEA;MACA,MAAM9C,OAAO,CAACqC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC;MACrDtB,iBAAiB,CAAC,KAAK,CAAC;;MAExB;MACA,IAAI;QACF;QACA,MAAM;UAAE+E;QAAW,CAAC,GAAG,MAAM/F,WAAW,CAACgG,wBAAwB,CAAC3E,SAAS,CAAC;QAE5E,IAAI0E,UAAU,EAAE;UACd;UACA,MAAM9F,OAAO,CAACqC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC;UACpDtB,iBAAiB,CAAC,IAAI,CAAC;UACvB,OAAO;YAAEkE,MAAM,EAAE;UAAK,CAAC;QACzB,CAAC,MAAM;UACL;UACA;UACA,MAAMjF,OAAO,CAACqC,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC;UACrDtB,iBAAiB,CAAC,KAAK,CAAC;UACxB,OAAO;YAAEkE,MAAM,EAAE;UAAM,CAAC;QAC1B;MACF,CAAC,CAAC,OAAOqD,SAAS,EAAE;QAClB;QACA,IAAIpE,OAAO,EAAE;UACXV,OAAO,CAAC+E,GAAG,CAAC,0DAA0D,EAAED,SAAS,CAAC;QACpF;QACA,OAAO;UAAErD,MAAM,EAAE;QAAM,CAAC;MAC1B;IACF,CAAC,CAAC,OAAOhB,KAAK,EAAE;MACd,MAAMN,OAAO,GAAG,IAAAyB,8BAAe,EAACnB,KAAK,EAAE;QACrCoB,cAAc,EAAE,wEAAwE;QACxFC,IAAI,EAAE3F,mBAAmB;QACzBe,OAAO;QACP6E,YAAY,EAAGC,GAAW,IAAK1E,YAAY,CAAC;UAAEmD,KAAK,EAAEuB;QAAI,CAAC,CAAC;QAC3DvE;MACF,CAAC,CAAC;MACFL,YAAY,CAAC+C,OAAO,CAAC;MACrB,MAAMM,KAAK;IACb,CAAC,SAAS;MACRnD,YAAY,CAAC;QAAE8D,SAAS,EAAE;MAAM,CAAC,CAAC;IACpC;EACF,CAAC,EACD,CAAC7E,WAAW,EAAEC,OAAO,EAAEc,YAAY,EAAEF,YAAY,EAAEF,OAAO,EAAEO,MAAM,EAAEF,iBAAiB,CACvF,CAAC;;EAED;AACF;AACA;EACE,MAAMyH,MAAM,GAAG,IAAArH,kBAAW,EACxB,MAAOU,UAAmB,IAAoB;IAC5C,IAAI,CAAC7B,OAAO,EAAE,MAAM,IAAI8C,KAAK,CAAC,yBAAyB,CAAC;IAExDhC,YAAY,CAAC;MAAE8D,SAAS,EAAE,IAAI;MAAEX,KAAK,EAAE;IAAK,CAAC,CAAC;IAE9C,IAAI;MACF;MACA,MAAM7C,SAAS,GAAG,MAAM0D,kBAAU,CAACc,YAAY,CAAC,CAAC;MACjD,IAAI,CAACxE,SAAS,EAAE;QACd,MAAM,IAAI0B,KAAK,CAAC,wEAAwE,CAAC;MAC3F;;MAEA;MACA,MAAM;QAAEgD;MAAW,CAAC,GAAG,MAAM/F,WAAW,CAACgG,wBAAwB,CAAC3E,SAAS,CAAC;MAC5E,IAAI,CAAC0E,UAAU,EAAE;QACf,MAAM,IAAIhD,KAAK,CAAC,kGAAkG,CAAC;MACrH;MAEA,OAAO,MAAM5B,aAAa,CAACE,SAAS,CAAC;IACvC,CAAC,CAAC,OAAO6C,KAAK,EAAE;MACd,MAAMN,OAAO,GAAG,IAAAyB,8BAAe,EAACnB,KAAK,EAAE;QACrCoB,cAAc,EAAE,gBAAgB;QAChCC,IAAI,EAAE5F,gBAAgB;QACtBgB,OAAO;QACP6E,YAAY,EAAGC,GAAW,IAAK1E,YAAY,CAAC;UAAEmD,KAAK,EAAEuB;QAAI,CAAC,CAAC;QAC3DvE;MACF,CAAC,CAAC;MACFL,YAAY,CAAC+C,OAAO,CAAC;MACrB,MAAMM,KAAK;IACb,CAAC,SAAS;MACRnD,YAAY,CAAC;QAAE8D,SAAS,EAAE;MAAM,CAAC,CAAC;IACpC;EACF,CAAC,EACD,CAAC5E,OAAO,EAAEc,YAAY,EAAEI,aAAa,EAAEN,YAAY,EAAEF,OAAO,EAAEO,MAAM,EAAElB,WAAW,CACnF,CAAC;;EAED;AACF;AACA;EACE,MAAM0I,MAAM,GAAG,IAAAtH,kBAAW,EACxB,MAAOuH,eAAwB,IAAoB;IACjD,IAAI,CAACxI,eAAe,EAAE;IAEtB,IAAI;MACF,MAAMyI,eAAe,GAAGD,eAAe,IAAIxI,eAAe;MAC1D,MAAMH,WAAW,CAACwE,aAAa,CAACrE,eAAe,EAAEyI,eAAe,CAAC;MAEjE,MAAMC,gBAAgB,GAAG3I,QAAQ,CAACwE,MAAM,CAAEJ,OAAO,IAAKA,OAAO,CAACf,SAAS,KAAKqF,eAAe,CAAC;MAC5FvI,cAAc,CAACwI,gBAAgB,EAAE;QAAElE,KAAK,EAAE;MAAM,CAAC,CAAC;MAElD,IAAIiE,eAAe,KAAKzI,eAAe,EAAE;QACvC,IAAI0I,gBAAgB,CAACZ,MAAM,GAAG,CAAC,EAAE;UAC/B,MAAMzH,aAAa,CAACqI,gBAAgB,CAAC,CAAC,CAAC,CAACtF,SAAS,CAAC;QACpD,CAAC,MAAM;UACL,MAAMhD,iBAAiB,CAAC,CAAC;UACzB;QACF;MACF;IACF,CAAC,CAAC,OAAO2D,KAAK,EAAE;MACd,MAAM4E,SAAS,GAAG,IAAAC,oCAAqB,EAAC7E,KAAK,CAAC;MAE9C,IAAI4E,SAAS,IAAIH,eAAe,KAAKxI,eAAe,EAAE;QACpD,MAAMI,iBAAiB,CAAC,CAAC;QACzB;MACF;MAEA,IAAA8E,8BAAe,EAACnB,KAAK,EAAE;QACrBoB,cAAc,EAAE,eAAe;QAC/BC,IAAI,EAAE1F,iBAAiB;QACvBc,OAAO;QACP6E,YAAY,EAAGC,GAAW,IAAK1E,YAAY,CAAC;UAAEmD,KAAK,EAAEuB;QAAI,CAAC,CAAC;QAC3DvE,MAAM;QACN8H,MAAM,EAAEF,SAAS,GAAG,GAAG,GAAGG;MAC5B,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CACE9I,eAAe,EACfI,iBAAiB,EACjBW,MAAM,EACNP,OAAO,EACPX,WAAW,EACXE,QAAQ,EACRa,YAAY,EACZP,aAAa,EACbH,cAAc,CAElB,CAAC;;EAED;AACF;AACA;EACE,MAAM6I,SAAS,GAAG,IAAA9H,kBAAW,EAAC,YAA2B;IACvD,IAAI,CAACjB,eAAe,EAAE;MACpB,MAAM+D,KAAK,GAAG,IAAInB,KAAK,CAAC,yBAAyB,CAAC;MAClDhC,YAAY,CAAC;QAAEmD,KAAK,EAAEA,KAAK,CAACN;MAAQ,CAAC,CAAC;MACtCjD,OAAO,GAAG;QAAEiD,OAAO,EAAEM,KAAK,CAACN,OAAO;QAAE2B,IAAI,EAAEzF,qBAAqB;QAAEkJ,MAAM,EAAE;MAAI,CAAC,CAAC;MAC/E,MAAM9E,KAAK;IACb;IAEA,IAAI;MACF,MAAMlE,WAAW,CAACmJ,iBAAiB,CAAChJ,eAAe,CAAC;MACpD,MAAMI,iBAAiB,CAAC,CAAC;IAC3B,CAAC,CAAC,OAAO2D,KAAK,EAAE;MACd,IAAAmB,8BAAe,EAACnB,KAAK,EAAE;QACrBoB,cAAc,EAAE,mBAAmB;QACnCC,IAAI,EAAEzF,qBAAqB;QAC3Ba,OAAO;QACP6E,YAAY,EAAGC,GAAW,IAAK1E,YAAY,CAAC;UAAEmD,KAAK,EAAEuB;QAAI,CAAC,CAAC;QAC3DvE;MACF,CAAC,CAAC;MACF,MAAMgD,KAAK,YAAYnB,KAAK,GAAGmB,KAAK,GAAG,IAAInB,KAAK,CAAC,mBAAmB,CAAC;IACvE;EACF,CAAC,EAAE,CAAC5C,eAAe,EAAEI,iBAAiB,EAAEW,MAAM,EAAEP,OAAO,EAAEX,WAAW,EAAEe,YAAY,CAAC,CAAC;;EAEpF;AACF;AACA;EACE,MAAMoE,WAAW,GAAG,IAAA/D,kBAAW,EAAC,YAA8B;IAC5D,OAAO2D,kBAAU,CAACI,WAAW,CAAC,CAAC;EACjC,CAAC,EAAE,EAAE,CAAC;;EAEN;AACF;AACA;EACE,MAAMU,YAAY,GAAG,IAAAzE,kBAAW,EAAC,YAAoC;IACnE,OAAO2D,kBAAU,CAACc,YAAY,CAAC,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAEN,OAAO;IACLjB,cAAc;IACdwB,cAAc;IACdqC,MAAM;IACNC,MAAM;IACNQ,SAAS;IACT/D,WAAW;IACXU,YAAY;IACZuD,gBAAgB,EAAE1D,kBAAkB;IACpCE;EACF,CAAC;AACH,CAAC;AAACyD,OAAA,CAAAtJ,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useDeviceManagement = void 0;
7
+ var _react = require("react");
8
+ var _deviceManager = require("../../../utils/deviceManager");
9
+ var _errorHandlers = require("../../utils/errorHandlers");
10
+ /**
11
+ * Provide device session management helpers tied to the current active session.
12
+ *
13
+ * @param options - Device management configuration
14
+ */
15
+ const useDeviceManagement = ({
16
+ oxyServices,
17
+ activeSessionId,
18
+ onError,
19
+ clearSessionState,
20
+ logger
21
+ }) => {
22
+ const getDeviceSessions = (0, _react.useCallback)(async () => {
23
+ if (!activeSessionId) throw new Error('No active session');
24
+ try {
25
+ return await oxyServices.getDeviceSessions(activeSessionId);
26
+ } catch (error) {
27
+ (0, _errorHandlers.handleAuthError)(error, {
28
+ defaultMessage: 'Failed to get device sessions',
29
+ code: 'GET_DEVICE_SESSIONS_ERROR',
30
+ onError,
31
+ logger
32
+ });
33
+ throw error instanceof Error ? error : new Error('Failed to get device sessions');
34
+ }
35
+ }, [activeSessionId, logger, onError, oxyServices]);
36
+ const logoutAllDeviceSessions = (0, _react.useCallback)(async () => {
37
+ if (!activeSessionId) throw new Error('No active session');
38
+ try {
39
+ await oxyServices.logoutAllDeviceSessions(activeSessionId);
40
+ await clearSessionState();
41
+ } catch (error) {
42
+ (0, _errorHandlers.handleAuthError)(error, {
43
+ defaultMessage: 'Failed to logout all device sessions',
44
+ code: 'LOGOUT_ALL_DEVICES_ERROR',
45
+ onError,
46
+ logger
47
+ });
48
+ throw error instanceof Error ? error : new Error('Failed to logout all device sessions');
49
+ }
50
+ }, [activeSessionId, clearSessionState, logger, onError, oxyServices]);
51
+ const updateDeviceName = (0, _react.useCallback)(async deviceName => {
52
+ if (!activeSessionId) throw new Error('No active session');
53
+ try {
54
+ await oxyServices.updateDeviceName(activeSessionId, deviceName);
55
+ await _deviceManager.DeviceManager.updateDeviceName(deviceName);
56
+ } catch (error) {
57
+ (0, _errorHandlers.handleAuthError)(error, {
58
+ defaultMessage: 'Failed to update device name',
59
+ code: 'UPDATE_DEVICE_NAME_ERROR',
60
+ onError,
61
+ logger
62
+ });
63
+ throw error instanceof Error ? error : new Error('Failed to update device name');
64
+ }
65
+ }, [activeSessionId, logger, onError, oxyServices]);
66
+ return {
67
+ getDeviceSessions,
68
+ logoutAllDeviceSessions,
69
+ updateDeviceName
70
+ };
71
+ };
72
+ exports.useDeviceManagement = useDeviceManagement;
73
+ //# sourceMappingURL=useDeviceManagement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_deviceManager","_errorHandlers","useDeviceManagement","oxyServices","activeSessionId","onError","clearSessionState","logger","getDeviceSessions","useCallback","Error","error","handleAuthError","defaultMessage","code","logoutAllDeviceSessions","updateDeviceName","deviceName","DeviceManager","exports"],"sourceRoot":"../../../../../src","sources":["ui/context/hooks/useDeviceManagement.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,cAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AAwBA;AACA;AACA;AACA;AACA;AACO,MAAMG,mBAAmB,GAAGA,CAAC;EAClCC,WAAW;EACXC,eAAe;EACfC,OAAO;EACPC,iBAAiB;EACjBC;AAC0B,CAAC,KAAgC;EAC3D,MAAMC,iBAAiB,GAAG,IAAAC,kBAAW,EAAC,YAQjC;IACH,IAAI,CAACL,eAAe,EAAE,MAAM,IAAIM,KAAK,CAAC,mBAAmB,CAAC;IAC1D,IAAI;MACF,OAAO,MAAMP,WAAW,CAACK,iBAAiB,CAACJ,eAAe,CAAC;IAC7D,CAAC,CAAC,OAAOO,KAAK,EAAE;MACd,IAAAC,8BAAe,EAACD,KAAK,EAAE;QACrBE,cAAc,EAAE,+BAA+B;QAC/CC,IAAI,EAAE,2BAA2B;QACjCT,OAAO;QACPE;MACF,CAAC,CAAC;MACF,MAAMI,KAAK,YAAYD,KAAK,GAAGC,KAAK,GAAG,IAAID,KAAK,CAAC,+BAA+B,CAAC;IACnF;EACF,CAAC,EAAE,CAACN,eAAe,EAAEG,MAAM,EAAEF,OAAO,EAAEF,WAAW,CAAC,CAAC;EAEnD,MAAMY,uBAAuB,GAAG,IAAAN,kBAAW,EAAC,YAA2B;IACrE,IAAI,CAACL,eAAe,EAAE,MAAM,IAAIM,KAAK,CAAC,mBAAmB,CAAC;IAE1D,IAAI;MACF,MAAMP,WAAW,CAACY,uBAAuB,CAACX,eAAe,CAAC;MAC1D,MAAME,iBAAiB,CAAC,CAAC;IAC3B,CAAC,CAAC,OAAOK,KAAK,EAAE;MACd,IAAAC,8BAAe,EAACD,KAAK,EAAE;QACrBE,cAAc,EAAE,sCAAsC;QACtDC,IAAI,EAAE,0BAA0B;QAChCT,OAAO;QACPE;MACF,CAAC,CAAC;MACF,MAAMI,KAAK,YAAYD,KAAK,GAAGC,KAAK,GAAG,IAAID,KAAK,CAAC,sCAAsC,CAAC;IAC1F;EACF,CAAC,EAAE,CAACN,eAAe,EAAEE,iBAAiB,EAAEC,MAAM,EAAEF,OAAO,EAAEF,WAAW,CAAC,CAAC;EAEtE,MAAMa,gBAAgB,GAAG,IAAAP,kBAAW,EAClC,MAAOQ,UAAkB,IAAoB;IAC3C,IAAI,CAACb,eAAe,EAAE,MAAM,IAAIM,KAAK,CAAC,mBAAmB,CAAC;IAE1D,IAAI;MACF,MAAMP,WAAW,CAACa,gBAAgB,CAACZ,eAAe,EAAEa,UAAU,CAAC;MAC/D,MAAMC,4BAAa,CAACF,gBAAgB,CAACC,UAAU,CAAC;IAClD,CAAC,CAAC,OAAON,KAAK,EAAE;MACd,IAAAC,8BAAe,EAACD,KAAK,EAAE;QACrBE,cAAc,EAAE,8BAA8B;QAC9CC,IAAI,EAAE,0BAA0B;QAChCT,OAAO;QACPE;MACF,CAAC,CAAC;MACF,MAAMI,KAAK,YAAYD,KAAK,GAAGC,KAAK,GAAG,IAAID,KAAK,CAAC,8BAA8B,CAAC;IAClF;EACF,CAAC,EACD,CAACN,eAAe,EAAEG,MAAM,EAAEF,OAAO,EAAEF,WAAW,CAChD,CAAC;EAED,OAAO;IACLK,iBAAiB;IACjBO,uBAAuB;IACvBC;EACF,CAAC;AACH,CAAC;AAACG,OAAA,CAAAjB,mBAAA,GAAAA,mBAAA","ignoreList":[]}