@oxyhq/services 5.24.0 → 5.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/README.md +60 -8
  2. package/lib/commonjs/core/AuthManager.js +405 -0
  3. package/lib/commonjs/core/AuthManager.js.map +1 -0
  4. package/lib/commonjs/core/HttpService.js +39 -1
  5. package/lib/commonjs/core/HttpService.js.map +1 -1
  6. package/lib/commonjs/core/index.js +16 -0
  7. package/lib/commonjs/core/index.js.map +1 -1
  8. package/lib/commonjs/core/mixins/OxyServices.fedcm.js +38 -44
  9. package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +1 -1
  10. package/lib/commonjs/core/mixins/OxyServices.popup.js +9 -7
  11. package/lib/commonjs/core/mixins/OxyServices.popup.js.map +1 -1
  12. package/lib/commonjs/index.js +321 -18
  13. package/lib/commonjs/index.js.map +1 -1
  14. package/lib/commonjs/shared/index.js +227 -0
  15. package/lib/commonjs/shared/index.js.map +1 -0
  16. package/lib/commonjs/shared/utils/colorUtils.js +161 -0
  17. package/lib/commonjs/shared/utils/colorUtils.js.map +1 -0
  18. package/lib/commonjs/shared/utils/debugUtils.js +84 -0
  19. package/lib/commonjs/shared/utils/debugUtils.js.map +1 -0
  20. package/lib/commonjs/shared/utils/errorUtils.js +190 -0
  21. package/lib/commonjs/shared/utils/errorUtils.js.map +1 -0
  22. package/lib/commonjs/shared/utils/index.js +196 -0
  23. package/lib/commonjs/shared/utils/index.js.map +1 -0
  24. package/lib/commonjs/shared/utils/networkUtils.js +213 -0
  25. package/lib/commonjs/shared/utils/networkUtils.js.map +1 -0
  26. package/lib/commonjs/shared/utils/themeUtils.js +118 -0
  27. package/lib/commonjs/shared/utils/themeUtils.js.map +1 -0
  28. package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -1
  29. package/lib/commonjs/ui/components/FontLoader.js +1 -1
  30. package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
  31. package/lib/commonjs/ui/components/GroupedItem.js +1 -1
  32. package/lib/commonjs/ui/components/Header.js +1 -1
  33. package/lib/commonjs/ui/components/OxyProvider.js +9 -1
  34. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  35. package/lib/commonjs/ui/components/OxySignInButton.js +19 -20
  36. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  37. package/lib/commonjs/ui/components/ProfileCard.js +1 -1
  38. package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
  39. package/lib/commonjs/ui/components/QuickActions.js +1 -1
  40. package/lib/commonjs/ui/components/QuickActions.js.map +1 -1
  41. package/lib/commonjs/ui/components/Section.js +1 -1
  42. package/lib/commonjs/ui/components/SectionTitle.js +1 -1
  43. package/lib/commonjs/ui/components/SignInModal.js +546 -0
  44. package/lib/commonjs/ui/components/SignInModal.js.map +1 -0
  45. package/lib/commonjs/ui/context/OxyContext.js +2 -1
  46. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  47. package/lib/commonjs/ui/hooks/{use-color-scheme.js → useColorScheme.js} +1 -1
  48. package/lib/commonjs/ui/hooks/useColorScheme.js.map +1 -0
  49. package/lib/commonjs/ui/hooks/useSessionSocket.js +6 -12
  50. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
  51. package/lib/commonjs/ui/hooks/useThemeColors.js +1 -1
  52. package/lib/commonjs/ui/hooks/useThemeStyles.js +1 -1
  53. package/lib/commonjs/ui/navigation/bottomSheetManager.js +5 -2
  54. package/lib/commonjs/ui/navigation/bottomSheetManager.js.map +1 -1
  55. package/lib/commonjs/ui/navigation/routes.js +7 -8
  56. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  57. package/lib/commonjs/ui/screens/AccountCenterScreen.js +7 -7
  58. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  59. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +6 -6
  60. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  61. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +2 -2
  62. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +4 -4
  63. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  64. package/lib/commonjs/ui/screens/AppInfoScreen.js +1 -1
  65. package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +1 -1
  66. package/lib/commonjs/ui/screens/FileManagementScreen.js +1 -1
  67. package/lib/commonjs/ui/screens/FollowersListScreen.js +18 -0
  68. package/lib/commonjs/ui/screens/FollowersListScreen.js.map +1 -0
  69. package/lib/commonjs/ui/screens/FollowingListScreen.js +18 -0
  70. package/lib/commonjs/ui/screens/FollowingListScreen.js.map +1 -0
  71. package/lib/commonjs/ui/screens/HelpSupportScreen.js +1 -1
  72. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  73. package/lib/commonjs/ui/screens/HistoryViewScreen.js +1 -1
  74. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +1 -1
  75. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +229 -0
  76. package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -0
  77. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +1 -1
  78. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  79. package/lib/commonjs/ui/screens/OxyAuthScreen.js +9 -21
  80. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
  81. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +1 -1
  82. package/lib/commonjs/ui/screens/ProfileScreen.js +1 -1
  83. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  84. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +1 -1
  85. package/lib/commonjs/ui/screens/UserListScreen.js +411 -0
  86. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -0
  87. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +1 -1
  88. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +1 -1
  89. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +1 -1
  90. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
  91. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +1 -1
  92. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +1 -1
  93. package/lib/commonjs/ui/stores/authStore.js +4 -6
  94. package/lib/commonjs/ui/stores/authStore.js.map +1 -1
  95. package/lib/commonjs/ui/utils/colorUtils.js +43 -46
  96. package/lib/commonjs/ui/utils/colorUtils.js.map +1 -1
  97. package/lib/commonjs/ui/utils/themeUtils.js +29 -39
  98. package/lib/commonjs/ui/utils/themeUtils.js.map +1 -1
  99. package/lib/commonjs/ui/utils/{user-utils.js → userUtils.js} +1 -1
  100. package/lib/commonjs/ui/utils/userUtils.js.map +1 -0
  101. package/lib/commonjs/utils/errorUtils.js +0 -13
  102. package/lib/commonjs/utils/errorUtils.js.map +1 -1
  103. package/lib/commonjs/utils/hookUtils.js +8 -8
  104. package/lib/commonjs/utils/hookUtils.js.map +1 -1
  105. package/lib/commonjs/web/WebOxyContext.js +277 -72
  106. package/lib/commonjs/web/WebOxyContext.js.map +1 -1
  107. package/lib/commonjs/web/index.js +177 -4
  108. package/lib/commonjs/web/index.js.map +1 -1
  109. package/lib/commonjs/web.js +12 -12
  110. package/lib/commonjs/web.js.map +1 -1
  111. package/lib/module/core/AuthManager.js +399 -0
  112. package/lib/module/core/AuthManager.js.map +1 -0
  113. package/lib/module/core/HttpService.js +39 -1
  114. package/lib/module/core/HttpService.js.map +1 -1
  115. package/lib/module/core/index.js +2 -0
  116. package/lib/module/core/index.js.map +1 -1
  117. package/lib/module/core/mixins/OxyServices.fedcm.js +38 -44
  118. package/lib/module/core/mixins/OxyServices.fedcm.js.map +1 -1
  119. package/lib/module/core/mixins/OxyServices.popup.js +9 -7
  120. package/lib/module/core/mixins/OxyServices.popup.js.map +1 -1
  121. package/lib/module/index.js +27 -2
  122. package/lib/module/index.js.map +1 -1
  123. package/lib/module/shared/index.js +37 -0
  124. package/lib/module/shared/index.js.map +1 -0
  125. package/lib/module/shared/utils/colorUtils.js +150 -0
  126. package/lib/module/shared/utils/colorUtils.js.map +1 -0
  127. package/lib/module/shared/utils/debugUtils.js +75 -0
  128. package/lib/module/shared/utils/debugUtils.js.map +1 -0
  129. package/lib/module/shared/utils/errorUtils.js +176 -0
  130. package/lib/module/shared/utils/errorUtils.js.map +1 -0
  131. package/lib/module/shared/utils/index.js +21 -0
  132. package/lib/module/shared/utils/index.js.map +1 -0
  133. package/lib/module/shared/utils/networkUtils.js +202 -0
  134. package/lib/module/shared/utils/networkUtils.js.map +1 -0
  135. package/lib/module/shared/utils/themeUtils.js +109 -0
  136. package/lib/module/shared/utils/themeUtils.js.map +1 -0
  137. package/lib/module/ui/components/BottomSheetRouter.js +1 -1
  138. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
  139. package/lib/module/ui/components/FontLoader.js +1 -1
  140. package/lib/module/ui/components/FontLoader.js.map +1 -1
  141. package/lib/module/ui/components/GroupedItem.js +1 -1
  142. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  143. package/lib/module/ui/components/Header.js +1 -1
  144. package/lib/module/ui/components/Header.js.map +1 -1
  145. package/lib/module/ui/components/OxyProvider.js +9 -1
  146. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  147. package/lib/module/ui/components/OxySignInButton.js +20 -21
  148. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  149. package/lib/module/ui/components/ProfileCard.js +1 -1
  150. package/lib/module/ui/components/ProfileCard.js.map +1 -1
  151. package/lib/module/ui/components/QuickActions.js +1 -1
  152. package/lib/module/ui/components/QuickActions.js.map +1 -1
  153. package/lib/module/ui/components/Section.js +1 -1
  154. package/lib/module/ui/components/Section.js.map +1 -1
  155. package/lib/module/ui/components/SectionTitle.js +1 -1
  156. package/lib/module/ui/components/SectionTitle.js.map +1 -1
  157. package/lib/module/ui/components/SignInModal.js +536 -0
  158. package/lib/module/ui/components/SignInModal.js.map +1 -0
  159. package/lib/module/ui/context/OxyContext.js +1 -1
  160. package/lib/module/ui/context/OxyContext.js.map +1 -1
  161. package/lib/module/ui/hooks/{use-color-scheme.js → useColorScheme.js} +1 -1
  162. package/lib/module/ui/hooks/useColorScheme.js.map +1 -0
  163. package/lib/module/ui/hooks/useSessionSocket.js +6 -12
  164. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
  165. package/lib/module/ui/hooks/useThemeColors.js +1 -1
  166. package/lib/module/ui/hooks/useThemeColors.js.map +1 -1
  167. package/lib/module/ui/hooks/useThemeStyles.js +1 -1
  168. package/lib/module/ui/hooks/useThemeStyles.js.map +1 -1
  169. package/lib/module/ui/navigation/bottomSheetManager.js +5 -2
  170. package/lib/module/ui/navigation/bottomSheetManager.js.map +1 -1
  171. package/lib/module/ui/navigation/routes.js +7 -8
  172. package/lib/module/ui/navigation/routes.js.map +1 -1
  173. package/lib/module/ui/screens/AccountCenterScreen.js +7 -7
  174. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  175. package/lib/module/ui/screens/AccountOverviewScreen.js +6 -6
  176. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  177. package/lib/module/ui/screens/AccountSettingsScreen.js +2 -2
  178. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  179. package/lib/module/ui/screens/AccountSwitcherScreen.js +4 -4
  180. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  181. package/lib/module/ui/screens/AppInfoScreen.js +1 -1
  182. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  183. package/lib/module/ui/screens/EditProfileFieldScreen.js +1 -1
  184. package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
  185. package/lib/module/ui/screens/FileManagementScreen.js +1 -1
  186. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  187. package/lib/module/ui/screens/FollowersListScreen.js +13 -0
  188. package/lib/module/ui/screens/FollowersListScreen.js.map +1 -0
  189. package/lib/module/ui/screens/FollowingListScreen.js +13 -0
  190. package/lib/module/ui/screens/FollowingListScreen.js.map +1 -0
  191. package/lib/module/ui/screens/HelpSupportScreen.js +1 -1
  192. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  193. package/lib/module/ui/screens/HistoryViewScreen.js +1 -1
  194. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  195. package/lib/module/ui/screens/LanguageSelectorScreen.js +1 -1
  196. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  197. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +224 -0
  198. package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -0
  199. package/lib/module/ui/screens/LegalDocumentsScreen.js +1 -1
  200. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  201. package/lib/module/ui/screens/OxyAuthScreen.js +9 -21
  202. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
  203. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +1 -1
  204. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  205. package/lib/module/ui/screens/ProfileScreen.js +1 -1
  206. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  207. package/lib/module/ui/screens/SavesCollectionsScreen.js +1 -1
  208. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  209. package/lib/module/ui/screens/UserListScreen.js +405 -0
  210. package/lib/module/ui/screens/UserListScreen.js.map +1 -0
  211. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +1 -1
  212. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  213. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +1 -1
  214. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  215. package/lib/module/ui/screens/karma/KarmaFAQScreen.js +1 -1
  216. package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  217. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
  218. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  219. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +1 -1
  220. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  221. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +1 -1
  222. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  223. package/lib/module/ui/stores/authStore.js +4 -6
  224. package/lib/module/ui/stores/authStore.js.map +1 -1
  225. package/lib/module/ui/utils/colorUtils.js +7 -40
  226. package/lib/module/ui/utils/colorUtils.js.map +1 -1
  227. package/lib/module/ui/utils/themeUtils.js +7 -35
  228. package/lib/module/ui/utils/themeUtils.js.map +1 -1
  229. package/lib/module/ui/utils/{user-utils.js → userUtils.js} +1 -1
  230. package/lib/module/ui/utils/userUtils.js.map +1 -0
  231. package/lib/module/utils/errorUtils.js +0 -7
  232. package/lib/module/utils/errorUtils.js.map +1 -1
  233. package/lib/module/utils/hookUtils.js +8 -8
  234. package/lib/module/utils/hookUtils.js.map +1 -1
  235. package/lib/module/web/WebOxyContext.js +276 -72
  236. package/lib/module/web/WebOxyContext.js.map +1 -1
  237. package/lib/module/web/index.js +26 -5
  238. package/lib/module/web/index.js.map +1 -1
  239. package/lib/module/web.js +2 -1
  240. package/lib/module/web.js.map +1 -1
  241. package/lib/typescript/commonjs/core/AuthManager.d.ts +144 -0
  242. package/lib/typescript/commonjs/core/AuthManager.d.ts.map +1 -0
  243. package/lib/typescript/commonjs/core/HttpService.d.ts.map +1 -1
  244. package/lib/typescript/commonjs/core/index.d.ts +2 -0
  245. package/lib/typescript/commonjs/core/index.d.ts.map +1 -1
  246. package/lib/typescript/commonjs/core/mixins/OxyServices.fedcm.d.ts.map +1 -1
  247. package/lib/typescript/commonjs/core/mixins/OxyServices.popup.d.ts.map +1 -1
  248. package/lib/typescript/commonjs/index.d.ts +16 -2
  249. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  250. package/lib/typescript/commonjs/models/session.d.ts +4 -0
  251. package/lib/typescript/commonjs/models/session.d.ts.map +1 -1
  252. package/lib/typescript/commonjs/shared/index.d.ts +29 -0
  253. package/lib/typescript/commonjs/shared/index.d.ts.map +1 -0
  254. package/lib/typescript/commonjs/shared/utils/colorUtils.d.ts +105 -0
  255. package/lib/typescript/commonjs/shared/utils/colorUtils.d.ts.map +1 -0
  256. package/lib/typescript/commonjs/shared/utils/debugUtils.d.ts +49 -0
  257. package/lib/typescript/commonjs/shared/utils/debugUtils.d.ts.map +1 -0
  258. package/lib/typescript/commonjs/shared/utils/errorUtils.d.ts +98 -0
  259. package/lib/typescript/commonjs/shared/utils/errorUtils.d.ts.map +1 -0
  260. package/lib/typescript/commonjs/shared/utils/index.d.ts +14 -0
  261. package/lib/typescript/commonjs/shared/utils/index.d.ts.map +1 -0
  262. package/lib/typescript/commonjs/shared/utils/networkUtils.d.ts +140 -0
  263. package/lib/typescript/commonjs/shared/utils/networkUtils.d.ts.map +1 -0
  264. package/lib/typescript/commonjs/shared/utils/themeUtils.d.ts +91 -0
  265. package/lib/typescript/commonjs/shared/utils/themeUtils.d.ts.map +1 -0
  266. package/lib/typescript/commonjs/ui/components/FontLoader.d.ts +1 -1
  267. package/lib/typescript/commonjs/ui/components/FontLoader.d.ts.map +1 -1
  268. package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
  269. package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
  270. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +18 -0
  271. package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -0
  272. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +1 -2
  273. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  274. package/lib/typescript/commonjs/ui/hooks/{use-color-scheme.d.ts → useColorScheme.d.ts} +1 -1
  275. package/lib/typescript/commonjs/ui/hooks/useColorScheme.d.ts.map +1 -0
  276. package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts.map +1 -1
  277. package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts +2 -0
  278. package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts.map +1 -1
  279. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
  280. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  281. package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts +9 -0
  282. package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts.map +1 -0
  283. package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts +9 -0
  284. package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts.map +1 -0
  285. package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts +5 -0
  286. package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -0
  287. package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  288. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts +11 -0
  289. package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -0
  290. package/lib/typescript/commonjs/ui/stores/authStore.d.ts.map +1 -1
  291. package/lib/typescript/commonjs/ui/utils/colorUtils.d.ts +7 -11
  292. package/lib/typescript/commonjs/ui/utils/colorUtils.d.ts.map +1 -1
  293. package/lib/typescript/commonjs/ui/utils/themeUtils.d.ts +6 -19
  294. package/lib/typescript/commonjs/ui/utils/themeUtils.d.ts.map +1 -1
  295. package/lib/typescript/commonjs/ui/utils/{user-utils.d.ts → userUtils.d.ts} +1 -1
  296. package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -0
  297. package/lib/typescript/commonjs/utils/errorUtils.d.ts +0 -6
  298. package/lib/typescript/commonjs/utils/errorUtils.d.ts.map +1 -1
  299. package/lib/typescript/commonjs/web/WebOxyContext.d.ts +113 -4
  300. package/lib/typescript/commonjs/web/WebOxyContext.d.ts.map +1 -1
  301. package/lib/typescript/commonjs/web/index.d.ts +20 -9
  302. package/lib/typescript/commonjs/web/index.d.ts.map +1 -1
  303. package/lib/typescript/commonjs/web.d.ts +2 -1
  304. package/lib/typescript/commonjs/web.d.ts.map +1 -1
  305. package/lib/typescript/module/core/AuthManager.d.ts +144 -0
  306. package/lib/typescript/module/core/AuthManager.d.ts.map +1 -0
  307. package/lib/typescript/module/core/HttpService.d.ts.map +1 -1
  308. package/lib/typescript/module/core/index.d.ts +2 -0
  309. package/lib/typescript/module/core/index.d.ts.map +1 -1
  310. package/lib/typescript/module/core/mixins/OxyServices.fedcm.d.ts.map +1 -1
  311. package/lib/typescript/module/core/mixins/OxyServices.popup.d.ts.map +1 -1
  312. package/lib/typescript/module/index.d.ts +16 -2
  313. package/lib/typescript/module/index.d.ts.map +1 -1
  314. package/lib/typescript/module/models/session.d.ts +4 -0
  315. package/lib/typescript/module/models/session.d.ts.map +1 -1
  316. package/lib/typescript/module/shared/index.d.ts +29 -0
  317. package/lib/typescript/module/shared/index.d.ts.map +1 -0
  318. package/lib/typescript/module/shared/utils/colorUtils.d.ts +105 -0
  319. package/lib/typescript/module/shared/utils/colorUtils.d.ts.map +1 -0
  320. package/lib/typescript/module/shared/utils/debugUtils.d.ts +49 -0
  321. package/lib/typescript/module/shared/utils/debugUtils.d.ts.map +1 -0
  322. package/lib/typescript/module/shared/utils/errorUtils.d.ts +98 -0
  323. package/lib/typescript/module/shared/utils/errorUtils.d.ts.map +1 -0
  324. package/lib/typescript/module/shared/utils/index.d.ts +14 -0
  325. package/lib/typescript/module/shared/utils/index.d.ts.map +1 -0
  326. package/lib/typescript/module/shared/utils/networkUtils.d.ts +140 -0
  327. package/lib/typescript/module/shared/utils/networkUtils.d.ts.map +1 -0
  328. package/lib/typescript/module/shared/utils/themeUtils.d.ts +91 -0
  329. package/lib/typescript/module/shared/utils/themeUtils.d.ts.map +1 -0
  330. package/lib/typescript/module/ui/components/FontLoader.d.ts +1 -1
  331. package/lib/typescript/module/ui/components/FontLoader.d.ts.map +1 -1
  332. package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
  333. package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
  334. package/lib/typescript/module/ui/components/SignInModal.d.ts +18 -0
  335. package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -0
  336. package/lib/typescript/module/ui/context/OxyContext.d.ts +1 -2
  337. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  338. package/lib/typescript/module/ui/hooks/{use-color-scheme.d.ts → useColorScheme.d.ts} +1 -1
  339. package/lib/typescript/module/ui/hooks/useColorScheme.d.ts.map +1 -0
  340. package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts.map +1 -1
  341. package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts +2 -0
  342. package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts.map +1 -1
  343. package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
  344. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  345. package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts +9 -0
  346. package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts.map +1 -0
  347. package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts +9 -0
  348. package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts.map +1 -0
  349. package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts +5 -0
  350. package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -0
  351. package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
  352. package/lib/typescript/module/ui/screens/UserListScreen.d.ts +11 -0
  353. package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -0
  354. package/lib/typescript/module/ui/stores/authStore.d.ts.map +1 -1
  355. package/lib/typescript/module/ui/utils/colorUtils.d.ts +7 -11
  356. package/lib/typescript/module/ui/utils/colorUtils.d.ts.map +1 -1
  357. package/lib/typescript/module/ui/utils/themeUtils.d.ts +6 -19
  358. package/lib/typescript/module/ui/utils/themeUtils.d.ts.map +1 -1
  359. package/lib/typescript/module/ui/utils/{user-utils.d.ts → userUtils.d.ts} +1 -1
  360. package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -0
  361. package/lib/typescript/module/utils/errorUtils.d.ts +0 -6
  362. package/lib/typescript/module/utils/errorUtils.d.ts.map +1 -1
  363. package/lib/typescript/module/web/WebOxyContext.d.ts +113 -4
  364. package/lib/typescript/module/web/WebOxyContext.d.ts.map +1 -1
  365. package/lib/typescript/module/web/index.d.ts +20 -9
  366. package/lib/typescript/module/web/index.d.ts.map +1 -1
  367. package/lib/typescript/module/web.d.ts +2 -1
  368. package/lib/typescript/module/web.d.ts.map +1 -1
  369. package/package.json +8 -2
  370. package/src/core/AuthManager.ts +436 -0
  371. package/src/core/HttpService.ts +43 -1
  372. package/src/core/index.ts +4 -0
  373. package/src/core/mixins/OxyServices.fedcm.ts +37 -42
  374. package/src/core/mixins/OxyServices.popup.ts +10 -7
  375. package/src/index.ts +76 -11
  376. package/src/models/session.ts +4 -0
  377. package/src/shared/index.ts +82 -0
  378. package/src/shared/utils/colorUtils.ts +155 -0
  379. package/src/shared/utils/debugUtils.ts +73 -0
  380. package/src/shared/utils/errorUtils.ts +181 -0
  381. package/src/shared/utils/index.ts +59 -0
  382. package/src/shared/utils/networkUtils.ts +248 -0
  383. package/src/shared/utils/themeUtils.ts +115 -0
  384. package/src/ui/components/BottomSheetRouter.tsx +1 -1
  385. package/src/ui/components/FontLoader.tsx +1 -2
  386. package/src/ui/components/GroupedItem.tsx +1 -1
  387. package/src/ui/components/Header.tsx +1 -1
  388. package/src/ui/components/OxyProvider.tsx +10 -0
  389. package/src/ui/components/OxySignInButton.tsx +20 -22
  390. package/src/ui/components/ProfileCard.tsx +1 -1
  391. package/src/ui/components/QuickActions.tsx +1 -1
  392. package/src/ui/components/Section.tsx +1 -1
  393. package/src/ui/components/SectionTitle.tsx +1 -1
  394. package/src/ui/components/SignInModal.tsx +534 -0
  395. package/src/ui/context/OxyContext.tsx +1 -2
  396. package/src/ui/hooks/queries/queryKeys.ts +2 -2
  397. package/src/ui/hooks/useSessionSocket.ts +12 -17
  398. package/src/ui/hooks/useThemeColors.ts +1 -1
  399. package/src/ui/hooks/useThemeStyles.ts +1 -1
  400. package/src/ui/navigation/bottomSheetManager.ts +5 -1
  401. package/src/ui/navigation/routes.ts +8 -9
  402. package/src/ui/screens/AccountCenterScreen.tsx +7 -7
  403. package/src/ui/screens/AccountOverviewScreen.tsx +6 -6
  404. package/src/ui/screens/AccountSettingsScreen.tsx +2 -2
  405. package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
  406. package/src/ui/screens/AppInfoScreen.tsx +1 -1
  407. package/src/ui/screens/EditProfileFieldScreen.tsx +1 -1
  408. package/src/ui/screens/FileManagementScreen.tsx +1 -1
  409. package/src/ui/screens/FollowersListScreen.tsx +14 -0
  410. package/src/ui/screens/FollowingListScreen.tsx +14 -0
  411. package/src/ui/screens/HelpSupportScreen.tsx +1 -1
  412. package/src/ui/screens/HistoryViewScreen.tsx +1 -1
  413. package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
  414. package/src/ui/screens/LearnMoreUsernamesScreen.tsx +231 -0
  415. package/src/ui/screens/LegalDocumentsScreen.tsx +1 -1
  416. package/src/ui/screens/OxyAuthScreen.tsx +10 -21
  417. package/src/ui/screens/PremiumSubscriptionScreen.tsx +1 -1
  418. package/src/ui/screens/ProfileScreen.tsx +1 -1
  419. package/src/ui/screens/SavesCollectionsScreen.tsx +1 -1
  420. package/src/ui/screens/UserListScreen.tsx +416 -0
  421. package/src/ui/screens/karma/KarmaAboutScreen.tsx +1 -1
  422. package/src/ui/screens/karma/KarmaCenterScreen.tsx +1 -1
  423. package/src/ui/screens/karma/KarmaFAQScreen.tsx +1 -1
  424. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +1 -1
  425. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +1 -1
  426. package/src/ui/screens/karma/KarmaRulesScreen.tsx +1 -1
  427. package/src/ui/stores/authStore.ts +5 -6
  428. package/src/ui/utils/colorUtils.ts +15 -43
  429. package/src/ui/utils/themeUtils.ts +14 -39
  430. package/src/utils/errorUtils.ts +1 -6
  431. package/src/utils/hookUtils.ts +8 -8
  432. package/src/web/WebOxyContext.tsx +330 -72
  433. package/src/web/index.ts +77 -7
  434. package/src/web.ts +1 -1
  435. package/lib/commonjs/ui/hooks/use-color-scheme.js.map +0 -1
  436. package/lib/commonjs/ui/utils/user-utils.js.map +0 -1
  437. package/lib/module/ui/hooks/use-color-scheme.js.map +0 -1
  438. package/lib/module/ui/utils/user-utils.js.map +0 -1
  439. package/lib/typescript/commonjs/ui/hooks/use-color-scheme.d.ts.map +0 -1
  440. package/lib/typescript/commonjs/ui/utils/user-utils.d.ts.map +0 -1
  441. package/lib/typescript/module/ui/hooks/use-color-scheme.d.ts.map +0 -1
  442. package/lib/typescript/module/ui/utils/user-utils.d.ts.map +0 -1
  443. /package/src/ui/hooks/{use-color-scheme.ts → useColorScheme.ts} +0 -0
  444. /package/src/ui/utils/{user-utils.ts → userUtils.ts} +0 -0
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Color Utility Functions
5
+ *
6
+ * Consolidated color manipulation utilities used across the OxyServices ecosystem.
7
+ * These functions work in any JavaScript environment (browser, Node.js, React Native).
8
+ *
9
+ * @module shared/utils/colorUtils
10
+ */
11
+
12
+ /**
13
+ * Darkens a hex color by a specified factor.
14
+ *
15
+ * @param color - Hex color string (with or without #)
16
+ * @param factor - Amount to darken (0-1). Default: 0.6
17
+ * @returns Darkened hex color string with # prefix
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * darkenColor('#FF0000', 0.5); // Returns a darker red
22
+ * darkenColor('FF0000', 0.3); // Also works without #
23
+ * ```
24
+ */
25
+ export const darkenColor = (color, factor = 0.6) => {
26
+ const hex = color.replace('#', '');
27
+ const r = parseInt(hex.substring(0, 2), 16);
28
+ const g = parseInt(hex.substring(2, 4), 16);
29
+ const b = parseInt(hex.substring(4, 6), 16);
30
+ const newR = Math.max(0, Math.round(r * (1 - factor)));
31
+ const newG = Math.max(0, Math.round(g * (1 - factor)));
32
+ const newB = Math.max(0, Math.round(b * (1 - factor)));
33
+ return `#${newR.toString(16).padStart(2, '0')}${newG.toString(16).padStart(2, '0')}${newB.toString(16).padStart(2, '0')}`;
34
+ };
35
+
36
+ /**
37
+ * Lightens a hex color by a specified factor.
38
+ *
39
+ * @param color - Hex color string (with or without #)
40
+ * @param factor - Amount to lighten (0-1). Default: 0.3
41
+ * @returns Lightened hex color string with # prefix
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * lightenColor('#0000FF', 0.5); // Returns a lighter blue
46
+ * ```
47
+ */
48
+ export const lightenColor = (color, factor = 0.3) => {
49
+ const hex = color.replace('#', '');
50
+ const r = parseInt(hex.substring(0, 2), 16);
51
+ const g = parseInt(hex.substring(2, 4), 16);
52
+ const b = parseInt(hex.substring(4, 6), 16);
53
+ const newR = Math.min(255, Math.round(r + (255 - r) * factor));
54
+ const newG = Math.min(255, Math.round(g + (255 - g) * factor));
55
+ const newB = Math.min(255, Math.round(b + (255 - b) * factor));
56
+ return `#${newR.toString(16).padStart(2, '0')}${newG.toString(16).padStart(2, '0')}${newB.toString(16).padStart(2, '0')}`;
57
+ };
58
+
59
+ /**
60
+ * Converts a hex color to RGB values.
61
+ *
62
+ * @param hex - Hex color string (with or without #)
63
+ * @returns Object with r, g, b values (0-255)
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * hexToRgb('#FF5733'); // { r: 255, g: 87, b: 51 }
68
+ * ```
69
+ */
70
+ export const hexToRgb = hex => {
71
+ const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
72
+ return result ? {
73
+ r: parseInt(result[1], 16),
74
+ g: parseInt(result[2], 16),
75
+ b: parseInt(result[3], 16)
76
+ } : null;
77
+ };
78
+
79
+ /**
80
+ * Converts RGB values to a hex color string.
81
+ *
82
+ * @param r - Red value (0-255)
83
+ * @param g - Green value (0-255)
84
+ * @param b - Blue value (0-255)
85
+ * @returns Hex color string with # prefix
86
+ *
87
+ * @example
88
+ * ```ts
89
+ * rgbToHex(255, 87, 51); // '#ff5733'
90
+ * ```
91
+ */
92
+ export const rgbToHex = (r, g, b) => {
93
+ return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
94
+ };
95
+
96
+ /**
97
+ * Adjusts the opacity of a hex color, returning an rgba string.
98
+ *
99
+ * @param hex - Hex color string
100
+ * @param opacity - Opacity value (0-1)
101
+ * @returns RGBA color string
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * withOpacity('#FF0000', 0.5); // 'rgba(255, 0, 0, 0.5)'
106
+ * ```
107
+ */
108
+ export const withOpacity = (hex, opacity) => {
109
+ const rgb = hexToRgb(hex);
110
+ if (!rgb) return hex;
111
+ return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${opacity})`;
112
+ };
113
+
114
+ /**
115
+ * Checks if a color is considered "light" (for determining text contrast).
116
+ *
117
+ * @param hex - Hex color string
118
+ * @returns true if the color is light, false if dark
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * isLightColor('#FFFFFF'); // true
123
+ * isLightColor('#000000'); // false
124
+ * ```
125
+ */
126
+ export const isLightColor = hex => {
127
+ const rgb = hexToRgb(hex);
128
+ if (!rgb) return true;
129
+
130
+ // Using relative luminance formula
131
+ const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;
132
+ return luminance > 0.5;
133
+ };
134
+
135
+ /**
136
+ * Gets a contrasting text color (black or white) for a given background color.
137
+ *
138
+ * @param backgroundColor - Hex color string of the background
139
+ * @returns '#000000' for light backgrounds, '#ffffff' for dark backgrounds
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * getContrastTextColor('#FFFF00'); // '#000000' (black text on yellow)
144
+ * getContrastTextColor('#000080'); // '#ffffff' (white text on navy)
145
+ * ```
146
+ */
147
+ export const getContrastTextColor = backgroundColor => {
148
+ return isLightColor(backgroundColor) ? '#000000' : '#ffffff';
149
+ };
150
+ //# sourceMappingURL=colorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["darkenColor","color","factor","hex","replace","r","parseInt","substring","g","b","newR","Math","max","round","newG","newB","toString","padStart","lightenColor","min","hexToRgb","result","exec","rgbToHex","slice","withOpacity","opacity","rgb","isLightColor","luminance","getContrastTextColor","backgroundColor"],"sourceRoot":"../../../../src","sources":["shared/utils/colorUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Debug Utilities
5
+ *
6
+ * Provides safe logging functions that only output in development mode.
7
+ * All logs are stripped in production builds.
8
+ *
9
+ * @module shared/utils/debugUtils
10
+ */
11
+
12
+ /* global __DEV__ */
13
+
14
+ /**
15
+ * Check if running in development mode
16
+ */
17
+ export const isDev = () => {
18
+ return typeof __DEV__ !== 'undefined' && __DEV__;
19
+ };
20
+
21
+ /**
22
+ * Log a debug message (only in development)
23
+ * @param prefix - Log prefix (e.g., '[FedCM]')
24
+ * @param args - Arguments to log
25
+ */
26
+ export const debugLog = (prefix, ...args) => {
27
+ if (isDev()) {
28
+ console.log(prefix, ...args);
29
+ }
30
+ };
31
+
32
+ /**
33
+ * Log a debug warning (only in development)
34
+ * @param prefix - Log prefix
35
+ * @param args - Arguments to log
36
+ */
37
+ export const debugWarn = (prefix, ...args) => {
38
+ if (isDev()) {
39
+ console.warn(prefix, ...args);
40
+ }
41
+ };
42
+
43
+ /**
44
+ * Log a debug error (only in development)
45
+ * @param prefix - Log prefix
46
+ * @param args - Arguments to log
47
+ */
48
+ export const debugError = (prefix, ...args) => {
49
+ if (isDev()) {
50
+ console.error(prefix, ...args);
51
+ }
52
+ };
53
+
54
+ /**
55
+ * Create a namespaced debug logger
56
+ * @param namespace - Logger namespace (e.g., 'FedCM', 'PopupAuth')
57
+ * @returns Object with log, warn, error methods
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const debug = createDebugLogger('FedCM');
62
+ * debug.log('Starting authentication');
63
+ * debug.warn('Token expires soon');
64
+ * debug.error('Authentication failed', error);
65
+ * ```
66
+ */
67
+ export const createDebugLogger = namespace => {
68
+ const prefix = `[${namespace}]`;
69
+ return {
70
+ log: (...args) => debugLog(prefix, ...args),
71
+ warn: (...args) => debugWarn(prefix, ...args),
72
+ error: (...args) => debugError(prefix, ...args)
73
+ };
74
+ };
75
+ //# sourceMappingURL=debugUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isDev","__DEV__","debugLog","prefix","args","console","log","debugWarn","warn","debugError","error","createDebugLogger","namespace"],"sourceRoot":"../../../../src","sources":["shared/utils/debugUtils.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAGA;AACA;AACA;AACA,OAAO,MAAMA,KAAK,GAAGA,CAAA,KAAe;EAClC,OAAO,OAAOC,OAAO,KAAK,WAAW,IAAIA,OAAO;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAGA,CAACC,MAAc,EAAE,GAAGC,IAAe,KAAW;EACpE,IAAIJ,KAAK,CAAC,CAAC,EAAE;IACXK,OAAO,CAACC,GAAG,CAACH,MAAM,EAAE,GAAGC,IAAI,CAAC;EAC9B;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMG,SAAS,GAAGA,CAACJ,MAAc,EAAE,GAAGC,IAAe,KAAW;EACrE,IAAIJ,KAAK,CAAC,CAAC,EAAE;IACXK,OAAO,CAACG,IAAI,CAACL,MAAM,EAAE,GAAGC,IAAI,CAAC;EAC/B;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,UAAU,GAAGA,CAACN,MAAc,EAAE,GAAGC,IAAe,KAAW;EACtE,IAAIJ,KAAK,CAAC,CAAC,EAAE;IACXK,OAAO,CAACK,KAAK,CAACP,MAAM,EAAE,GAAGC,IAAI,CAAC;EAChC;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMO,iBAAiB,GAAIC,SAAiB,IAAK;EACtD,MAAMT,MAAM,GAAG,IAAIS,SAAS,GAAG;EAC/B,OAAO;IACLN,GAAG,EAAEA,CAAC,GAAGF,IAAe,KAAKF,QAAQ,CAACC,MAAM,EAAE,GAAGC,IAAI,CAAC;IACtDI,IAAI,EAAEA,CAAC,GAAGJ,IAAe,KAAKG,SAAS,CAACJ,MAAM,EAAE,GAAGC,IAAI,CAAC;IACxDM,KAAK,EAAEA,CAAC,GAAGN,IAAe,KAAKK,UAAU,CAACN,MAAM,EAAE,GAAGC,IAAI;EAC3D,CAAC;AACH,CAAC","ignoreList":[]}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Error Utility Functions
5
+ *
6
+ * Consolidated error handling utilities for the OxyServices ecosystem.
7
+ * These functions help with common error patterns like checking HTTP status codes.
8
+ *
9
+ * @module shared/utils/errorUtils
10
+ */
11
+
12
+ /**
13
+ * Common HTTP status codes used in error checking.
14
+ */
15
+ export const HttpStatus = {
16
+ BAD_REQUEST: 400,
17
+ UNAUTHORIZED: 401,
18
+ FORBIDDEN: 403,
19
+ NOT_FOUND: 404,
20
+ CONFLICT: 409,
21
+ UNPROCESSABLE_ENTITY: 422,
22
+ TOO_MANY_REQUESTS: 429,
23
+ INTERNAL_SERVER_ERROR: 500,
24
+ BAD_GATEWAY: 502,
25
+ SERVICE_UNAVAILABLE: 503,
26
+ GATEWAY_TIMEOUT: 504
27
+ };
28
+
29
+ /**
30
+ * Extracts the HTTP status code from an error object.
31
+ *
32
+ * @param error - Any error object
33
+ * @returns The status code if found, undefined otherwise
34
+ */
35
+ export const getErrorStatus = error => {
36
+ if (!error || typeof error !== 'object') return undefined;
37
+ const err = error;
38
+
39
+ // Direct status property
40
+ if (typeof err.status === 'number') return err.status;
41
+
42
+ // Axios-style response.status
43
+ if (err.response && typeof err.response === 'object') {
44
+ const response = err.response;
45
+ if (typeof response.status === 'number') return response.status;
46
+ }
47
+
48
+ // statusCode property (some libraries use this)
49
+ if (typeof err.statusCode === 'number') return err.statusCode;
50
+ return undefined;
51
+ };
52
+
53
+ /**
54
+ * Extracts the error message from an error object.
55
+ *
56
+ * @param error - Any error object
57
+ * @param fallback - Fallback message if none found
58
+ * @returns The error message
59
+ */
60
+ export const getErrorMessage = (error, fallback = 'An unknown error occurred') => {
61
+ if (!error) return fallback;
62
+ if (typeof error === 'string') return error;
63
+ if (error instanceof Error) return error.message;
64
+ if (typeof error === 'object') {
65
+ const err = error;
66
+ if (typeof err.message === 'string') return err.message;
67
+ if (typeof err.error === 'string') return err.error;
68
+
69
+ // Axios-style response.data.message
70
+ if (err.response && typeof err.response === 'object') {
71
+ const response = err.response;
72
+ if (response.data && typeof response.data === 'object') {
73
+ const data = response.data;
74
+ if (typeof data.message === 'string') return data.message;
75
+ if (typeof data.error === 'string') return data.error;
76
+ }
77
+ }
78
+ }
79
+ return fallback;
80
+ };
81
+
82
+ /**
83
+ * Check if an error indicates the user is already registered (HTTP 409 Conflict).
84
+ *
85
+ * The backend should always return HTTP 409 for duplicate registrations.
86
+ *
87
+ * @param error - Any error object
88
+ * @returns true if the error is a 409 Conflict
89
+ */
90
+ export const isAlreadyRegisteredError = error => {
91
+ return getErrorStatus(error) === HttpStatus.CONFLICT;
92
+ };
93
+
94
+ /**
95
+ * Check if an error is an authentication error (HTTP 401).
96
+ *
97
+ * @param error - Any error object
98
+ * @returns true if the error is a 401 Unauthorized
99
+ */
100
+ export const isUnauthorizedError = error => {
101
+ return getErrorStatus(error) === HttpStatus.UNAUTHORIZED;
102
+ };
103
+
104
+ /**
105
+ * Check if an error is a forbidden error (HTTP 403).
106
+ *
107
+ * @param error - Any error object
108
+ * @returns true if the error is a 403 Forbidden
109
+ */
110
+ export const isForbiddenError = error => {
111
+ return getErrorStatus(error) === HttpStatus.FORBIDDEN;
112
+ };
113
+
114
+ /**
115
+ * Check if an error is a not found error (HTTP 404).
116
+ *
117
+ * @param error - Any error object
118
+ * @returns true if the error is a 404 Not Found
119
+ */
120
+ export const isNotFoundError = error => {
121
+ return getErrorStatus(error) === HttpStatus.NOT_FOUND;
122
+ };
123
+
124
+ /**
125
+ * Check if an error is a rate limit error (HTTP 429).
126
+ *
127
+ * @param error - Any error object
128
+ * @returns true if the error is a 429 Too Many Requests
129
+ */
130
+ export const isRateLimitError = error => {
131
+ return getErrorStatus(error) === HttpStatus.TOO_MANY_REQUESTS;
132
+ };
133
+
134
+ /**
135
+ * Check if an error is a server error (HTTP 5xx).
136
+ *
137
+ * @param error - Any error object
138
+ * @returns true if the error is a 5xx server error
139
+ */
140
+ export const isServerError = error => {
141
+ const status = getErrorStatus(error);
142
+ return status !== undefined && status >= 500 && status < 600;
143
+ };
144
+
145
+ /**
146
+ * Check if an error is a network error (no response received).
147
+ *
148
+ * @param error - Any error object
149
+ * @returns true if the error appears to be a network error
150
+ */
151
+ export const isNetworkError = error => {
152
+ if (!error || typeof error !== 'object') return false;
153
+ const err = error;
154
+
155
+ // Check for common network error indicators
156
+ if (err.name === 'NetworkError') return true;
157
+ if (err.code === 'ENOTFOUND' || err.code === 'ECONNREFUSED' || err.code === 'ETIMEDOUT') return true;
158
+
159
+ // Axios-style: has request but no response
160
+ if (err.request && !err.response) return true;
161
+
162
+ // Message-based detection
163
+ const message = getErrorMessage(error, '').toLowerCase();
164
+ return message.includes('network') || message.includes('connection') || message.includes('timeout');
165
+ };
166
+
167
+ /**
168
+ * Check if an error is retryable (network errors or 5xx server errors).
169
+ *
170
+ * @param error - Any error object
171
+ * @returns true if the request should be retried
172
+ */
173
+ export const isRetryableError = error => {
174
+ return isNetworkError(error) || isServerError(error) || isRateLimitError(error);
175
+ };
176
+ //# sourceMappingURL=errorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["HttpStatus","BAD_REQUEST","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","CONFLICT","UNPROCESSABLE_ENTITY","TOO_MANY_REQUESTS","INTERNAL_SERVER_ERROR","BAD_GATEWAY","SERVICE_UNAVAILABLE","GATEWAY_TIMEOUT","getErrorStatus","error","undefined","err","status","response","statusCode","getErrorMessage","fallback","Error","message","data","isAlreadyRegisteredError","isUnauthorizedError","isForbiddenError","isNotFoundError","isRateLimitError","isServerError","isNetworkError","name","code","request","toLowerCase","includes","isRetryableError"],"sourceRoot":"../../../../src","sources":["shared/utils/errorUtils.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Shared Utility Functions
5
+ *
6
+ * Re-exports all shared utilities for convenient importing.
7
+ *
8
+ * @module shared/utils
9
+ */
10
+
11
+ // Color utilities
12
+ export { darkenColor, lightenColor, hexToRgb, rgbToHex, withOpacity, isLightColor, getContrastTextColor } from "./colorUtils.js";
13
+
14
+ // Theme utilities
15
+ export { normalizeTheme, normalizeColorScheme, getOppositeTheme, systemPrefersDarkMode, getSystemColorScheme } from "./themeUtils.js";
16
+ // Error utilities
17
+ export { HttpStatus, getErrorStatus, getErrorMessage, isAlreadyRegisteredError, isUnauthorizedError, isForbiddenError, isNotFoundError, isRateLimitError, isServerError, isNetworkError, isRetryableError } from "./errorUtils.js";
18
+
19
+ // Network utilities
20
+ export { DEFAULT_CIRCUIT_BREAKER_CONFIG, createCircuitBreakerState, calculateBackoffInterval, recordFailure, recordSuccess, shouldAllowRequest, delay, withRetry } from "./networkUtils.js";
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["darkenColor","lightenColor","hexToRgb","rgbToHex","withOpacity","isLightColor","getContrastTextColor","normalizeTheme","normalizeColorScheme","getOppositeTheme","systemPrefersDarkMode","getSystemColorScheme","HttpStatus","getErrorStatus","getErrorMessage","isAlreadyRegisteredError","isUnauthorizedError","isForbiddenError","isNotFoundError","isRateLimitError","isServerError","isNetworkError","isRetryableError","DEFAULT_CIRCUIT_BREAKER_CONFIG","createCircuitBreakerState","calculateBackoffInterval","recordFailure","recordSuccess","shouldAllowRequest","delay","withRetry"],"sourceRoot":"../../../../src","sources":["shared/utils/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SACEA,WAAW,EACXC,YAAY,EACZC,QAAQ,EACRC,QAAQ,EACRC,WAAW,EACXC,YAAY,EACZC,oBAAoB,QACf,iBAAc;;AAErB;AACA,SACEC,cAAc,EACdC,oBAAoB,EACpBC,gBAAgB,EAChBC,qBAAqB,EACrBC,oBAAoB,QACf,iBAAc;AAGrB;AACA,SACEC,UAAU,EACVC,cAAc,EACdC,eAAe,EACfC,wBAAwB,EACxBC,mBAAmB,EACnBC,gBAAgB,EAChBC,eAAe,EACfC,gBAAgB,EAChBC,aAAa,EACbC,cAAc,EACdC,gBAAgB,QACX,iBAAc;;AAErB;AACA,SACEC,8BAA8B,EAC9BC,yBAAyB,EACzBC,wBAAwB,EACxBC,aAAa,EACbC,aAAa,EACbC,kBAAkB,EAClBC,KAAK,EACLC,SAAS,QACJ,mBAAgB","ignoreList":[]}
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Network Utility Functions
5
+ *
6
+ * Consolidated network utilities including circuit breaker pattern
7
+ * and exponential backoff for resilient API calls.
8
+ *
9
+ * @module shared/utils/networkUtils
10
+ */
11
+
12
+ /**
13
+ * State for circuit breaker pattern.
14
+ */
15
+
16
+ /**
17
+ * Configuration for circuit breaker.
18
+ */
19
+
20
+ /**
21
+ * Default circuit breaker configuration.
22
+ */
23
+ export const DEFAULT_CIRCUIT_BREAKER_CONFIG = {
24
+ baseInterval: 10000,
25
+ maxInterval: 60000,
26
+ maxFailures: 5,
27
+ recoveryTimeout: 30000
28
+ };
29
+
30
+ /**
31
+ * Creates initial circuit breaker state.
32
+ *
33
+ * @param config - Optional custom configuration
34
+ * @returns Initial circuit breaker state
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const state = createCircuitBreakerState({ maxFailures: 3 });
39
+ * ```
40
+ */
41
+ export const createCircuitBreakerState = (config = {}) => {
42
+ const {
43
+ baseInterval,
44
+ maxInterval,
45
+ maxFailures
46
+ } = {
47
+ ...DEFAULT_CIRCUIT_BREAKER_CONFIG,
48
+ ...config
49
+ };
50
+ return {
51
+ consecutiveFailures: 0,
52
+ currentInterval: baseInterval,
53
+ baseInterval,
54
+ maxInterval,
55
+ maxFailures,
56
+ isOpen: false
57
+ };
58
+ };
59
+
60
+ /**
61
+ * Calculates next interval using exponential backoff.
62
+ *
63
+ * @param state - Current circuit breaker state
64
+ * @returns Next interval in milliseconds
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * const nextInterval = calculateBackoffInterval(state);
69
+ * await delay(nextInterval);
70
+ * ```
71
+ */
72
+ export const calculateBackoffInterval = state => {
73
+ const {
74
+ consecutiveFailures,
75
+ baseInterval,
76
+ maxInterval
77
+ } = state;
78
+ if (consecutiveFailures === 0) return baseInterval;
79
+ const backoffMultiplier = Math.min(Math.pow(2, consecutiveFailures - 1), maxInterval / baseInterval);
80
+ return Math.min(baseInterval * backoffMultiplier, maxInterval);
81
+ };
82
+
83
+ /**
84
+ * Records a failure and updates circuit breaker state.
85
+ *
86
+ * @param state - Current circuit breaker state
87
+ * @returns Updated state after recording failure
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * try {
92
+ * await apiCall();
93
+ * state = recordSuccess(state);
94
+ * } catch (error) {
95
+ * state = recordFailure(state);
96
+ * }
97
+ * ```
98
+ */
99
+ export const recordFailure = state => {
100
+ const newFailures = state.consecutiveFailures + 1;
101
+ const newInterval = calculateBackoffInterval({
102
+ ...state,
103
+ consecutiveFailures: newFailures
104
+ });
105
+ const shouldOpenCircuit = newFailures >= state.maxFailures;
106
+ const finalInterval = shouldOpenCircuit ? state.maxInterval : newInterval;
107
+ return {
108
+ ...state,
109
+ consecutiveFailures: newFailures,
110
+ currentInterval: finalInterval,
111
+ isOpen: shouldOpenCircuit,
112
+ openedAt: shouldOpenCircuit ? Date.now() : state.openedAt
113
+ };
114
+ };
115
+
116
+ /**
117
+ * Records a success and resets circuit breaker state.
118
+ *
119
+ * @param state - Current circuit breaker state
120
+ * @returns Reset state after successful request
121
+ */
122
+ export const recordSuccess = state => {
123
+ return {
124
+ ...state,
125
+ consecutiveFailures: 0,
126
+ currentInterval: state.baseInterval,
127
+ isOpen: false,
128
+ openedAt: undefined
129
+ };
130
+ };
131
+
132
+ /**
133
+ * Checks if the circuit breaker should allow a request.
134
+ *
135
+ * When the circuit is open, it will only allow requests after
136
+ * the recovery timeout has passed (half-open state).
137
+ *
138
+ * @param state - Current circuit breaker state
139
+ * @param recoveryTimeout - Time to wait before allowing recovery attempts
140
+ * @returns true if request should be allowed
141
+ */
142
+ export const shouldAllowRequest = (state, recoveryTimeout = DEFAULT_CIRCUIT_BREAKER_CONFIG.recoveryTimeout) => {
143
+ if (!state.isOpen) return true;
144
+ if (!state.openedAt) return true;
145
+ const timeSinceOpen = Date.now() - state.openedAt;
146
+ return timeSinceOpen >= recoveryTimeout;
147
+ };
148
+
149
+ /**
150
+ * Delays execution for a specified duration.
151
+ *
152
+ * @param ms - Milliseconds to delay
153
+ * @returns Promise that resolves after the delay
154
+ *
155
+ * @example
156
+ * ```ts
157
+ * await delay(1000); // Wait 1 second
158
+ * ```
159
+ */
160
+ export const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
161
+
162
+ /**
163
+ * Executes a function with exponential backoff retry.
164
+ *
165
+ * @param fn - Async function to execute
166
+ * @param options - Retry options
167
+ * @returns Result of the function
168
+ * @throws Last error if all retries fail
169
+ *
170
+ * @example
171
+ * ```ts
172
+ * const result = await withRetry(
173
+ * () => fetchData(),
174
+ * { maxRetries: 3, baseDelay: 1000 }
175
+ * );
176
+ * ```
177
+ */
178
+ export const withRetry = async (fn, options = {}) => {
179
+ const {
180
+ maxRetries = 3,
181
+ baseDelay = 1000,
182
+ maxDelay = 30000,
183
+ shouldRetry = () => true,
184
+ onRetry
185
+ } = options;
186
+ let lastError;
187
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
188
+ try {
189
+ return await fn();
190
+ } catch (error) {
191
+ lastError = error;
192
+ if (attempt === maxRetries || !shouldRetry(error)) {
193
+ throw error;
194
+ }
195
+ const delayMs = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);
196
+ onRetry?.(error, attempt + 1);
197
+ await delay(delayMs);
198
+ }
199
+ }
200
+ throw lastError;
201
+ };
202
+ //# sourceMappingURL=networkUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_CIRCUIT_BREAKER_CONFIG","baseInterval","maxInterval","maxFailures","recoveryTimeout","createCircuitBreakerState","config","consecutiveFailures","currentInterval","isOpen","calculateBackoffInterval","state","backoffMultiplier","Math","min","pow","recordFailure","newFailures","newInterval","shouldOpenCircuit","finalInterval","openedAt","Date","now","recordSuccess","undefined","shouldAllowRequest","timeSinceOpen","delay","ms","Promise","resolve","setTimeout","withRetry","fn","options","maxRetries","baseDelay","maxDelay","shouldRetry","onRetry","lastError","attempt","error","delayMs"],"sourceRoot":"../../../../src","sources":["shared/utils/networkUtils.ts"],"mappings":"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","ignoreList":[]}