@oxyhq/services 5.13.0 → 5.13.2

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 (353) hide show
  1. package/README.md +71 -0
  2. package/lib/commonjs/core/HttpClient.js +238 -0
  3. package/lib/commonjs/core/HttpClient.js.map +1 -0
  4. package/lib/commonjs/core/OxyServices.js +530 -332
  5. package/lib/commonjs/core/OxyServices.js.map +1 -1
  6. package/lib/commonjs/core/RequestManager.js +199 -0
  7. package/lib/commonjs/core/RequestManager.js.map +1 -0
  8. package/lib/commonjs/core/index.js +38 -1
  9. package/lib/commonjs/core/index.js.map +1 -1
  10. package/lib/commonjs/i18n/index.js +37 -1
  11. package/lib/commonjs/i18n/index.js.map +1 -1
  12. package/lib/commonjs/i18n/locales/ar-SA.json +128 -0
  13. package/lib/commonjs/i18n/locales/ca-ES.json +128 -0
  14. package/lib/commonjs/i18n/locales/de-DE.json +128 -0
  15. package/lib/commonjs/i18n/locales/en-US.json +85 -12
  16. package/lib/commonjs/i18n/locales/es-ES.json +58 -6
  17. package/lib/commonjs/i18n/locales/fr-FR.json +128 -0
  18. package/lib/commonjs/i18n/locales/it-IT.json +128 -0
  19. package/lib/commonjs/i18n/locales/ja-JP.json +127 -0
  20. package/lib/commonjs/i18n/locales/ko-KR.json +128 -0
  21. package/lib/commonjs/i18n/locales/pt-PT.json +128 -0
  22. package/lib/commonjs/i18n/locales/zh-CN.json +128 -0
  23. package/lib/commonjs/index.js +36 -0
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/commonjs/ui/components/Avatar.js +94 -27
  26. package/lib/commonjs/ui/components/Avatar.js.map +1 -1
  27. package/lib/commonjs/ui/components/FollowButton.js +1 -0
  28. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  29. package/lib/commonjs/ui/components/FontLoader.js +22 -42
  30. package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
  31. package/lib/commonjs/ui/components/OxyProvider.js +5 -8
  32. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  33. package/lib/commonjs/ui/components/StepBasedScreen.js +64 -44
  34. package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
  35. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +14 -35
  36. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  37. package/lib/commonjs/ui/components/internal/PinInput.js +2 -2
  38. package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -1
  39. package/lib/commonjs/ui/components/internal/TextField.js +13 -8
  40. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  41. package/lib/commonjs/ui/context/OxyContext.js +443 -371
  42. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  43. package/lib/commonjs/ui/hooks/useSessionSocket.js +80 -22
  44. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  45. package/lib/commonjs/ui/index.js +4 -1
  46. package/lib/commonjs/ui/index.js.map +1 -1
  47. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +32 -2
  48. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  49. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +101 -59
  50. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  51. package/lib/commonjs/ui/screens/FileManagementScreen.js +3 -2
  52. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  53. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +75 -117
  54. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  55. package/lib/commonjs/ui/screens/SignInScreen.js +43 -50
  56. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  57. package/lib/commonjs/ui/screens/SignUpScreen.js +14 -16
  58. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  59. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +188 -142
  60. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  61. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +10 -10
  62. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  63. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +2 -4
  64. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  65. package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js +45 -25
  66. package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js.map +1 -1
  67. package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js +88 -53
  68. package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js.map +1 -1
  69. package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js +79 -58
  70. package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js.map +1 -1
  71. package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js +61 -52
  72. package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js.map +1 -1
  73. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js +218 -39
  74. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js.map +1 -1
  75. package/lib/commonjs/ui/screens/steps/SignInTotpStep.js +77 -50
  76. package/lib/commonjs/ui/screens/steps/SignInTotpStep.js.map +1 -1
  77. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js +424 -71
  78. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js.map +1 -1
  79. package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js +55 -30
  80. package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js.map +1 -1
  81. package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js +64 -46
  82. package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js.map +1 -1
  83. package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js +84 -146
  84. package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js.map +1 -1
  85. package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js +113 -34
  86. package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js.map +1 -1
  87. package/lib/commonjs/ui/stores/accountStore.js +237 -0
  88. package/lib/commonjs/ui/stores/accountStore.js.map +1 -0
  89. package/lib/commonjs/ui/stores/authStore.js +17 -20
  90. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  91. package/lib/commonjs/ui/styles/authStyles.js +16 -8
  92. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  93. package/lib/commonjs/ui/styles/index.js +11 -0
  94. package/lib/commonjs/ui/styles/index.js.map +1 -1
  95. package/lib/commonjs/ui/styles/spacing.js +51 -0
  96. package/lib/commonjs/ui/styles/spacing.js.map +1 -0
  97. package/lib/commonjs/utils/asyncUtils.js +9 -22
  98. package/lib/commonjs/utils/asyncUtils.js.map +1 -1
  99. package/lib/commonjs/utils/cache.js +259 -0
  100. package/lib/commonjs/utils/cache.js.map +1 -0
  101. package/lib/commonjs/utils/index.js +99 -0
  102. package/lib/commonjs/utils/index.js.map +1 -1
  103. package/lib/commonjs/utils/languageUtils.js +159 -0
  104. package/lib/commonjs/utils/languageUtils.js.map +1 -0
  105. package/lib/commonjs/utils/requestUtils.js +217 -0
  106. package/lib/commonjs/utils/requestUtils.js.map +1 -0
  107. package/lib/commonjs/utils/sessionUtils.js +191 -0
  108. package/lib/commonjs/utils/sessionUtils.js.map +1 -0
  109. package/lib/commonjs/utils/validationUtils.js +1 -1
  110. package/lib/module/core/HttpClient.js +232 -0
  111. package/lib/module/core/HttpClient.js.map +1 -0
  112. package/lib/module/core/OxyServices.js +528 -326
  113. package/lib/module/core/OxyServices.js.map +1 -1
  114. package/lib/module/core/RequestManager.js +194 -0
  115. package/lib/module/core/RequestManager.js.map +1 -0
  116. package/lib/module/core/index.js +2 -0
  117. package/lib/module/core/index.js.map +1 -1
  118. package/lib/module/i18n/index.js +37 -1
  119. package/lib/module/i18n/index.js.map +1 -1
  120. package/lib/module/i18n/locales/ar-SA.json +128 -0
  121. package/lib/module/i18n/locales/ca-ES.json +128 -0
  122. package/lib/module/i18n/locales/de-DE.json +128 -0
  123. package/lib/module/i18n/locales/en-US.json +85 -12
  124. package/lib/module/i18n/locales/es-ES.json +58 -6
  125. package/lib/module/i18n/locales/fr-FR.json +128 -0
  126. package/lib/module/i18n/locales/it-IT.json +128 -0
  127. package/lib/module/i18n/locales/ja-JP.json +127 -0
  128. package/lib/module/i18n/locales/ko-KR.json +128 -0
  129. package/lib/module/i18n/locales/pt-PT.json +128 -0
  130. package/lib/module/i18n/locales/zh-CN.json +128 -0
  131. package/lib/module/index.js +2 -0
  132. package/lib/module/index.js.map +1 -1
  133. package/lib/module/ui/components/Avatar.js +94 -27
  134. package/lib/module/ui/components/Avatar.js.map +1 -1
  135. package/lib/module/ui/components/FollowButton.js +1 -0
  136. package/lib/module/ui/components/FollowButton.js.map +1 -1
  137. package/lib/module/ui/components/FontLoader.js +23 -43
  138. package/lib/module/ui/components/FontLoader.js.map +1 -1
  139. package/lib/module/ui/components/OxyProvider.js +6 -8
  140. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  141. package/lib/module/ui/components/StepBasedScreen.js +65 -45
  142. package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
  143. package/lib/module/ui/components/internal/GroupedPillButtons.js +14 -35
  144. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  145. package/lib/module/ui/components/internal/PinInput.js +2 -2
  146. package/lib/module/ui/components/internal/PinInput.js.map +1 -1
  147. package/lib/module/ui/components/internal/TextField.js +13 -8
  148. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  149. package/lib/module/ui/context/OxyContext.js +442 -370
  150. package/lib/module/ui/context/OxyContext.js.map +1 -1
  151. package/lib/module/ui/hooks/useSessionSocket.js +80 -22
  152. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  153. package/lib/module/ui/index.js +4 -2
  154. package/lib/module/ui/index.js.map +1 -1
  155. package/lib/module/ui/screens/AccountSettingsScreen.js +33 -2
  156. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  157. package/lib/module/ui/screens/AccountSwitcherScreen.js +102 -60
  158. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  159. package/lib/module/ui/screens/FileManagementScreen.js +3 -2
  160. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  161. package/lib/module/ui/screens/LanguageSelectorScreen.js +73 -117
  162. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  163. package/lib/module/ui/screens/SignInScreen.js +44 -51
  164. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  165. package/lib/module/ui/screens/SignUpScreen.js +14 -16
  166. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  167. package/lib/module/ui/screens/WelcomeNewUserScreen.js +187 -143
  168. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  169. package/lib/module/ui/screens/internal/SignInPasswordStep.js +10 -10
  170. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -1
  171. package/lib/module/ui/screens/internal/SignInUsernameStep.js +2 -4
  172. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -1
  173. package/lib/module/ui/screens/steps/RecoverRequestStep.js +45 -25
  174. package/lib/module/ui/screens/steps/RecoverRequestStep.js.map +1 -1
  175. package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js +89 -54
  176. package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js.map +1 -1
  177. package/lib/module/ui/screens/steps/RecoverSuccessStep.js +80 -59
  178. package/lib/module/ui/screens/steps/RecoverSuccessStep.js.map +1 -1
  179. package/lib/module/ui/screens/steps/RecoverVerifyStep.js +62 -53
  180. package/lib/module/ui/screens/steps/RecoverVerifyStep.js.map +1 -1
  181. package/lib/module/ui/screens/steps/SignInPasswordStep.js +219 -40
  182. package/lib/module/ui/screens/steps/SignInPasswordStep.js.map +1 -1
  183. package/lib/module/ui/screens/steps/SignInTotpStep.js +78 -51
  184. package/lib/module/ui/screens/steps/SignInTotpStep.js.map +1 -1
  185. package/lib/module/ui/screens/steps/SignInUsernameStep.js +426 -73
  186. package/lib/module/ui/screens/steps/SignInUsernameStep.js.map +1 -1
  187. package/lib/module/ui/screens/steps/SignUpIdentityStep.js +55 -30
  188. package/lib/module/ui/screens/steps/SignUpIdentityStep.js.map +1 -1
  189. package/lib/module/ui/screens/steps/SignUpSecurityStep.js +65 -47
  190. package/lib/module/ui/screens/steps/SignUpSecurityStep.js.map +1 -1
  191. package/lib/module/ui/screens/steps/SignUpSummaryStep.js +84 -146
  192. package/lib/module/ui/screens/steps/SignUpSummaryStep.js.map +1 -1
  193. package/lib/module/ui/screens/steps/SignUpWelcomeStep.js +114 -35
  194. package/lib/module/ui/screens/steps/SignUpWelcomeStep.js.map +1 -1
  195. package/lib/module/ui/stores/accountStore.js +229 -0
  196. package/lib/module/ui/stores/accountStore.js.map +1 -0
  197. package/lib/module/ui/stores/authStore.js +17 -20
  198. package/lib/module/ui/stores/authStore.js.map +1 -1
  199. package/lib/module/ui/styles/authStyles.js +16 -8
  200. package/lib/module/ui/styles/authStyles.js.map +1 -1
  201. package/lib/module/ui/styles/index.js +1 -0
  202. package/lib/module/ui/styles/index.js.map +1 -1
  203. package/lib/module/ui/styles/spacing.js +48 -0
  204. package/lib/module/ui/styles/spacing.js.map +1 -0
  205. package/lib/module/utils/asyncUtils.js +10 -22
  206. package/lib/module/utils/asyncUtils.js.map +1 -1
  207. package/lib/module/utils/cache.js +250 -0
  208. package/lib/module/utils/cache.js.map +1 -0
  209. package/lib/module/utils/index.js +7 -0
  210. package/lib/module/utils/index.js.map +1 -1
  211. package/lib/module/utils/languageUtils.js +151 -0
  212. package/lib/module/utils/languageUtils.js.map +1 -0
  213. package/lib/module/utils/requestUtils.js +210 -0
  214. package/lib/module/utils/requestUtils.js.map +1 -0
  215. package/lib/module/utils/sessionUtils.js +180 -0
  216. package/lib/module/utils/sessionUtils.js.map +1 -0
  217. package/lib/module/utils/validationUtils.js +1 -1
  218. package/lib/typescript/core/HttpClient.d.ts +64 -0
  219. package/lib/typescript/core/HttpClient.d.ts.map +1 -0
  220. package/lib/typescript/core/OxyServices.d.ts +86 -73
  221. package/lib/typescript/core/OxyServices.d.ts.map +1 -1
  222. package/lib/typescript/core/RequestManager.d.ts +67 -0
  223. package/lib/typescript/core/RequestManager.d.ts.map +1 -0
  224. package/lib/typescript/core/index.d.ts +2 -0
  225. package/lib/typescript/core/index.d.ts.map +1 -1
  226. package/lib/typescript/i18n/index.d.ts.map +1 -1
  227. package/lib/typescript/index.d.ts +2 -0
  228. package/lib/typescript/index.d.ts.map +1 -1
  229. package/lib/typescript/models/interfaces.d.ts +15 -0
  230. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  231. package/lib/typescript/models/session.d.ts +1 -0
  232. package/lib/typescript/models/session.d.ts.map +1 -1
  233. package/lib/typescript/ui/components/Avatar.d.ts +6 -7
  234. package/lib/typescript/ui/components/Avatar.d.ts.map +1 -1
  235. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  236. package/lib/typescript/ui/components/FontLoader.d.ts +3 -3
  237. package/lib/typescript/ui/components/FontLoader.d.ts.map +1 -1
  238. package/lib/typescript/ui/components/OxyProvider.d.ts +2 -2
  239. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  240. package/lib/typescript/ui/components/StepBasedScreen.d.ts.map +1 -1
  241. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +1 -1
  242. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  243. package/lib/typescript/ui/context/OxyContext.d.ts +5 -0
  244. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  245. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -1
  246. package/lib/typescript/ui/index.d.ts +2 -2
  247. package/lib/typescript/ui/index.d.ts.map +1 -1
  248. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  249. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  250. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts +3 -3
  251. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  252. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  253. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  254. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  255. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -1
  256. package/lib/typescript/ui/screens/steps/RecoverRequestStep.d.ts.map +1 -1
  257. package/lib/typescript/ui/screens/steps/RecoverResetPasswordStep.d.ts.map +1 -1
  258. package/lib/typescript/ui/screens/steps/RecoverSuccessStep.d.ts.map +1 -1
  259. package/lib/typescript/ui/screens/steps/RecoverVerifyStep.d.ts.map +1 -1
  260. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts +2 -0
  261. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts.map +1 -1
  262. package/lib/typescript/ui/screens/steps/SignInTotpStep.d.ts.map +1 -1
  263. package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts.map +1 -1
  264. package/lib/typescript/ui/screens/steps/SignUpIdentityStep.d.ts.map +1 -1
  265. package/lib/typescript/ui/screens/steps/SignUpSecurityStep.d.ts.map +1 -1
  266. package/lib/typescript/ui/screens/steps/SignUpSummaryStep.d.ts.map +1 -1
  267. package/lib/typescript/ui/screens/steps/SignUpWelcomeStep.d.ts.map +1 -1
  268. package/lib/typescript/ui/stores/accountStore.d.ts +34 -0
  269. package/lib/typescript/ui/stores/accountStore.d.ts.map +1 -0
  270. package/lib/typescript/ui/stores/authStore.d.ts +7 -3
  271. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  272. package/lib/typescript/ui/styles/authStyles.d.ts +19 -2
  273. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -1
  274. package/lib/typescript/ui/styles/index.d.ts +1 -0
  275. package/lib/typescript/ui/styles/index.d.ts.map +1 -1
  276. package/lib/typescript/ui/styles/spacing.d.ts +43 -0
  277. package/lib/typescript/ui/styles/spacing.d.ts.map +1 -0
  278. package/lib/typescript/utils/asyncUtils.d.ts +2 -0
  279. package/lib/typescript/utils/asyncUtils.d.ts.map +1 -1
  280. package/lib/typescript/utils/cache.d.ts +128 -0
  281. package/lib/typescript/utils/cache.d.ts.map +1 -0
  282. package/lib/typescript/utils/index.d.ts +4 -0
  283. package/lib/typescript/utils/index.d.ts.map +1 -1
  284. package/lib/typescript/utils/languageUtils.d.ts +38 -0
  285. package/lib/typescript/utils/languageUtils.d.ts.map +1 -0
  286. package/lib/typescript/utils/requestUtils.d.ts +122 -0
  287. package/lib/typescript/utils/requestUtils.d.ts.map +1 -0
  288. package/lib/typescript/utils/sessionUtils.d.ts +55 -0
  289. package/lib/typescript/utils/sessionUtils.d.ts.map +1 -0
  290. package/lib/typescript/utils/validationUtils.d.ts +1 -1
  291. package/package.json +1 -1
  292. package/src/core/HttpClient.ts +277 -0
  293. package/src/core/OxyServices.ts +461 -352
  294. package/src/core/RequestManager.ts +240 -0
  295. package/src/core/index.ts +10 -0
  296. package/src/i18n/index.ts +36 -0
  297. package/src/i18n/locales/ar-SA.json +128 -0
  298. package/src/i18n/locales/ca-ES.json +128 -0
  299. package/src/i18n/locales/de-DE.json +128 -0
  300. package/src/i18n/locales/en-US.json +85 -12
  301. package/src/i18n/locales/es-ES.json +58 -6
  302. package/src/i18n/locales/fr-FR.json +128 -0
  303. package/src/i18n/locales/it-IT.json +128 -0
  304. package/src/i18n/locales/ja-JP.json +127 -0
  305. package/src/i18n/locales/ko-KR.json +128 -0
  306. package/src/i18n/locales/pt-PT.json +128 -0
  307. package/src/i18n/locales/zh-CN.json +128 -0
  308. package/src/index.ts +10 -0
  309. package/src/models/interfaces.ts +19 -0
  310. package/src/models/session.ts +1 -1
  311. package/src/ui/components/Avatar.tsx +151 -35
  312. package/src/ui/components/FollowButton.tsx +1 -0
  313. package/src/ui/components/FontLoader.tsx +17 -37
  314. package/src/ui/components/OxyProvider.tsx +14 -13
  315. package/src/ui/components/StepBasedScreen.tsx +66 -43
  316. package/src/ui/components/internal/GroupedPillButtons.tsx +15 -31
  317. package/src/ui/components/internal/PinInput.tsx +2 -2
  318. package/src/ui/components/internal/TextField.tsx +7 -6
  319. package/src/ui/context/OxyContext.tsx +441 -326
  320. package/src/ui/hooks/useSessionSocket.ts +72 -18
  321. package/src/ui/index.ts +4 -1
  322. package/src/ui/screens/AccountSettingsScreen.tsx +34 -2
  323. package/src/ui/screens/AccountSwitcherScreen.tsx +102 -68
  324. package/src/ui/screens/FileManagementScreen.tsx +16 -16
  325. package/src/ui/screens/LanguageSelectorScreen.tsx +86 -143
  326. package/src/ui/screens/SignInScreen.tsx +59 -43
  327. package/src/ui/screens/SignUpScreen.tsx +14 -15
  328. package/src/ui/screens/WelcomeNewUserScreen.tsx +153 -105
  329. package/src/ui/screens/internal/SignInPasswordStep.tsx +4 -6
  330. package/src/ui/screens/internal/SignInUsernameStep.tsx +1 -1
  331. package/src/ui/screens/steps/RecoverRequestStep.tsx +34 -24
  332. package/src/ui/screens/steps/RecoverResetPasswordStep.tsx +65 -36
  333. package/src/ui/screens/steps/RecoverSuccessStep.tsx +71 -47
  334. package/src/ui/screens/steps/RecoverVerifyStep.tsx +60 -50
  335. package/src/ui/screens/steps/SignInPasswordStep.tsx +190 -32
  336. package/src/ui/screens/steps/SignInTotpStep.tsx +68 -34
  337. package/src/ui/screens/steps/SignInUsernameStep.tsx +446 -63
  338. package/src/ui/screens/steps/SignUpIdentityStep.tsx +49 -35
  339. package/src/ui/screens/steps/SignUpSecurityStep.tsx +56 -39
  340. package/src/ui/screens/steps/SignUpSummaryStep.tsx +99 -89
  341. package/src/ui/screens/steps/SignUpWelcomeStep.tsx +88 -20
  342. package/src/ui/stores/accountStore.ts +285 -0
  343. package/src/ui/stores/authStore.ts +16 -19
  344. package/src/ui/styles/authStyles.ts +16 -8
  345. package/src/ui/styles/index.ts +1 -0
  346. package/src/ui/styles/spacing.ts +46 -0
  347. package/src/utils/asyncUtils.ts +10 -24
  348. package/src/utils/cache.ts +264 -0
  349. package/src/utils/index.ts +19 -0
  350. package/src/utils/languageUtils.ts +174 -0
  351. package/src/utils/requestUtils.ts +234 -0
  352. package/src/utils/sessionUtils.ts +206 -0
  353. package/src/utils/validationUtils.ts +1 -1
package/README.md CHANGED
@@ -15,6 +15,7 @@ A comprehensive TypeScript client library for the Oxy API providing authenticati
15
15
  - [Configuration](#configuration)
16
16
  - [Authentication](#authentication)
17
17
  - [UI Components](#ui-components)
18
+ - [Internationalization (i18n)](#internationalization-i18n)
18
19
  - [Troubleshooting](#troubleshooting)
19
20
  - [Requirements](#requirements)
20
21
 
@@ -569,6 +570,76 @@ function MyComponent() {
569
570
  }
570
571
  ```
571
572
 
573
+ ## 🌍 Internationalization (i18n)
574
+
575
+ OxyHQ Services includes built-in language selection and storage. The selected language can be accessed and synced with your app's i18n system.
576
+
577
+ ### Getting Current Language
578
+
579
+ ```typescript
580
+ import { useOxy } from '@oxyhq/services';
581
+
582
+ function MyComponent() {
583
+ const {
584
+ currentLanguage, // 'en-US'
585
+ currentLanguageName, // 'English'
586
+ currentNativeLanguageName, // 'Español' (if Spanish is selected)
587
+ currentLanguageMetadata // Full metadata object
588
+ } = useOxy();
589
+
590
+ return <Text>Current language: {currentLanguageName}</Text>;
591
+ }
592
+ ```
593
+
594
+ ### Syncing with Your i18n Library
595
+
596
+ To integrate with react-i18next, i18n-js, next-intl, or other i18n libraries, see the comprehensive guide:
597
+
598
+ 📖 **[Complete i18n Integration Guide](./I18N_INTEGRATION.md)**
599
+
600
+ This guide includes:
601
+ - Step-by-step integration with popular i18n libraries
602
+ - Bidirectional sync between services and your i18n system
603
+ - Language code format conversion utilities
604
+ - Complete working examples
605
+
606
+ ### Using OxyServices (Non-React)
607
+
608
+ ```typescript
609
+ import { OxyServices } from '@oxyhq/services/core';
610
+
611
+ const oxy = new OxyServices({ baseURL: 'https://api.oxy.so' });
612
+
613
+ // Get current language code
614
+ const languageCode = await oxy.getCurrentLanguage();
615
+
616
+ // Get language name
617
+ const languageName = await oxy.getCurrentLanguageName();
618
+
619
+ // Get full metadata
620
+ const metadata = await oxy.getCurrentLanguageMetadata();
621
+ ```
622
+
623
+ ### Language Utilities
624
+
625
+ ```typescript
626
+ import {
627
+ SUPPORTED_LANGUAGES,
628
+ getLanguageName,
629
+ getLanguageMetadata
630
+ } from '@oxyhq/services';
631
+
632
+ // Get all supported languages
633
+ const languages = SUPPORTED_LANGUAGES;
634
+
635
+ // Get language name from code
636
+ const name = getLanguageName('es-ES'); // 'Spanish'
637
+
638
+ // Get full metadata
639
+ const metadata = getLanguageMetadata('es-ES');
640
+ // { id: 'es-ES', name: 'Spanish', nativeName: 'Español', flag: '🇪🇸', ... }
641
+ ```
642
+
572
643
  ## 🛠️ Troubleshooting
573
644
 
574
645
  ### Common Issues
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HttpClient = void 0;
7
+ var _axios = _interopRequireDefault(require("axios"));
8
+ var _jwtDecode = require("jwt-decode");
9
+ var _errorUtils = require("../utils/errorUtils");
10
+ var _requestUtils = require("../utils/requestUtils");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ /**
13
+ * HTTP Client Service
14
+ *
15
+ * Handles all HTTP communication with authentication, interceptors, and error handling.
16
+ * This is the single source of truth for making authenticated HTTP requests.
17
+ */
18
+
19
+ /**
20
+ * Token store for authentication
21
+ */
22
+ class TokenStore {
23
+ accessToken = null;
24
+ refreshToken = null;
25
+ constructor() {}
26
+ static getInstance() {
27
+ if (!TokenStore.instance) {
28
+ TokenStore.instance = new TokenStore();
29
+ }
30
+ return TokenStore.instance;
31
+ }
32
+ setTokens(accessToken, refreshToken = '') {
33
+ this.accessToken = accessToken;
34
+ this.refreshToken = refreshToken;
35
+ }
36
+ getAccessToken() {
37
+ return this.accessToken;
38
+ }
39
+ getRefreshToken() {
40
+ return this.refreshToken;
41
+ }
42
+ clearTokens() {
43
+ this.accessToken = null;
44
+ this.refreshToken = null;
45
+ }
46
+ hasAccessToken() {
47
+ return !!this.accessToken;
48
+ }
49
+ }
50
+
51
+ /**
52
+ * HTTP Client Service
53
+ *
54
+ * Manages Axios instance with authentication interceptors.
55
+ * All HTTP requests should go through this service to ensure authentication.
56
+ */
57
+ class HttpClient {
58
+ constructor(config) {
59
+ this.baseURL = config.baseURL;
60
+ this.tokenStore = TokenStore.getInstance();
61
+ this.logger = new _requestUtils.SimpleLogger(config.enableLogging || false, config.logLevel || 'error', 'HttpClient');
62
+ const timeout = config.requestTimeout || 5000;
63
+
64
+ // Create Axios instance with optimized configuration
65
+ this.client = _axios.default.create({
66
+ baseURL: config.baseURL,
67
+ timeout,
68
+ headers: {
69
+ 'Accept': 'application/json'
70
+ },
71
+ // Enable HTTP keep-alive for connection reuse (Node.js only)
72
+ ...(typeof process !== 'undefined' && process.env && typeof window === 'undefined' && typeof require !== 'undefined' ? {
73
+ httpAgent: new (require('http').Agent)({
74
+ keepAlive: true,
75
+ keepAliveMsecs: 1000,
76
+ maxSockets: 50
77
+ }),
78
+ httpsAgent: new (require('https').Agent)({
79
+ keepAlive: true,
80
+ keepAliveMsecs: 1000,
81
+ maxSockets: 50
82
+ })
83
+ } : {})
84
+ });
85
+ this.setupInterceptors();
86
+ }
87
+
88
+ /**
89
+ * Setup axios interceptors for authentication and error handling
90
+ */
91
+ setupInterceptors() {
92
+ // Request interceptor: Add authentication header
93
+ this.client.interceptors.request.use(async req => {
94
+ const accessToken = this.tokenStore.getAccessToken();
95
+ if (!accessToken) {
96
+ return req;
97
+ }
98
+ try {
99
+ const decoded = (0, _jwtDecode.jwtDecode)(accessToken);
100
+ const currentTime = Math.floor(Date.now() / 1000);
101
+
102
+ // If token expires in less than 60 seconds, refresh it
103
+ if (decoded.exp && decoded.exp - currentTime < 60) {
104
+ if (decoded.sessionId) {
105
+ try {
106
+ // Create a new axios instance to avoid interceptor recursion
107
+ const refreshClient = _axios.default.create({
108
+ baseURL: this.client.defaults.baseURL,
109
+ timeout: this.client.defaults.timeout
110
+ });
111
+ const res = await refreshClient.get(`/api/session/token/${decoded.sessionId}`);
112
+ this.tokenStore.setTokens(res.data.accessToken);
113
+ req.headers.Authorization = `Bearer ${res.data.accessToken}`;
114
+ this.logger.debug('Token refreshed');
115
+ } catch (refreshError) {
116
+ // If refresh fails, use current token anyway
117
+ req.headers.Authorization = `Bearer ${accessToken}`;
118
+ this.logger.warn('Token refresh failed, using current token');
119
+ }
120
+ } else {
121
+ req.headers.Authorization = `Bearer ${accessToken}`;
122
+ }
123
+ } else {
124
+ req.headers.Authorization = `Bearer ${accessToken}`;
125
+ }
126
+ } catch (error) {
127
+ this.logger.error('Error processing token:', error);
128
+ // Even if there's an error, still try to use the token
129
+ req.headers.Authorization = `Bearer ${accessToken}`;
130
+ }
131
+ return req;
132
+ }, error => {
133
+ this.logger.error('Request interceptor error:', error);
134
+ return Promise.reject(error);
135
+ });
136
+
137
+ // Response interceptor: Handle auth errors
138
+ this.client.interceptors.response.use(response => response, error => {
139
+ if (error.response?.status === 401) {
140
+ this.logger.warn('401 Unauthorized, clearing tokens');
141
+ this.tokenStore.clearTokens();
142
+ }
143
+ return Promise.reject(error);
144
+ });
145
+ }
146
+
147
+ /**
148
+ * Get the underlying Axios instance
149
+ * Use this only when you need direct access to Axios features
150
+ */
151
+ getAxiosInstance() {
152
+ return this.client;
153
+ }
154
+
155
+ /**
156
+ * Make a raw HTTP request (no caching, deduplication, etc.)
157
+ * Use this for requests that need to bypass performance features
158
+ */
159
+ async request(config) {
160
+ try {
161
+ const response = await this.client.request({
162
+ method: config.method,
163
+ url: config.url,
164
+ data: config.data,
165
+ params: config.params,
166
+ timeout: config.timeout,
167
+ signal: config.signal
168
+ });
169
+
170
+ // Unwrap standardized API response format: { data: ... }
171
+ // This handles responses from sendSuccess() and sendPaginated() helpers
172
+ const responseData = response.data;
173
+
174
+ // Handle paginated responses: { data: [...], pagination: {...} }
175
+ // Return the data array directly - the calling method will wrap it appropriately
176
+ if (responseData && typeof responseData === 'object' && 'data' in responseData && 'pagination' in responseData) {
177
+ // For paginated responses, return the data array directly
178
+ // The calling methods like getUserFollowers/getUserFollowing will handle wrapping
179
+ // We return the whole response so methods can access both data and pagination
180
+ return responseData;
181
+ }
182
+
183
+ // Handle regular success responses: { data: ... }
184
+ if (responseData && typeof responseData === 'object' && 'data' in responseData) {
185
+ return responseData.data;
186
+ }
187
+
188
+ // Return as-is for responses that don't use sendSuccess wrapper
189
+ return responseData;
190
+ } catch (error) {
191
+ throw (0, _errorUtils.handleHttpError)(error);
192
+ }
193
+ }
194
+
195
+ /**
196
+ * Get base URL
197
+ */
198
+ getBaseURL() {
199
+ return this.baseURL;
200
+ }
201
+
202
+ /**
203
+ * Set authentication tokens
204
+ */
205
+ setTokens(accessToken, refreshToken = '') {
206
+ this.tokenStore.setTokens(accessToken, refreshToken);
207
+ }
208
+
209
+ /**
210
+ * Clear authentication tokens
211
+ */
212
+ clearTokens() {
213
+ this.tokenStore.clearTokens();
214
+ }
215
+
216
+ /**
217
+ * Get access token
218
+ */
219
+ getAccessToken() {
220
+ return this.tokenStore.getAccessToken();
221
+ }
222
+
223
+ /**
224
+ * Check if has access token
225
+ */
226
+ hasAccessToken() {
227
+ return this.tokenStore.hasAccessToken();
228
+ }
229
+
230
+ // Test-only utility to reset global tokens between jest tests
231
+ static __resetTokensForTests() {
232
+ try {
233
+ TokenStore.getInstance().clearTokens();
234
+ } catch {}
235
+ }
236
+ }
237
+ exports.HttpClient = HttpClient;
238
+ //# sourceMappingURL=HttpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_axios","_interopRequireDefault","require","_jwtDecode","_errorUtils","_requestUtils","e","__esModule","default","TokenStore","accessToken","refreshToken","constructor","getInstance","instance","setTokens","getAccessToken","getRefreshToken","clearTokens","hasAccessToken","HttpClient","config","baseURL","tokenStore","logger","SimpleLogger","enableLogging","logLevel","timeout","requestTimeout","client","axios","create","headers","process","env","window","httpAgent","Agent","keepAlive","keepAliveMsecs","maxSockets","httpsAgent","setupInterceptors","interceptors","request","use","req","decoded","jwtDecode","currentTime","Math","floor","Date","now","exp","sessionId","refreshClient","defaults","res","get","data","Authorization","debug","refreshError","warn","error","Promise","reject","response","status","getAxiosInstance","method","url","params","signal","responseData","handleHttpError","getBaseURL","__resetTokensForTests","exports"],"sourceRoot":"../../../src","sources":["core/HttpClient.ts"],"mappings":"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","ignoreList":[]}