@oxyhq/services 5.25.0 → 5.26.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.
- package/README.md +60 -8
- package/lib/commonjs/core/AuthManager.js +405 -0
- package/lib/commonjs/core/AuthManager.js.map +1 -0
- package/lib/commonjs/core/HttpService.js +39 -1
- package/lib/commonjs/core/HttpService.js.map +1 -1
- package/lib/commonjs/core/index.js +16 -0
- package/lib/commonjs/core/index.js.map +1 -1
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js +38 -44
- package/lib/commonjs/core/mixins/OxyServices.fedcm.js.map +1 -1
- package/lib/commonjs/core/mixins/OxyServices.popup.js +9 -7
- package/lib/commonjs/core/mixins/OxyServices.popup.js.map +1 -1
- package/lib/commonjs/crypto/keyManager.js +16 -21
- package/lib/commonjs/crypto/keyManager.js.map +1 -1
- package/lib/commonjs/index.js +386 -18
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/lib/sonner.js +13 -17
- package/lib/commonjs/lib/sonner.js.map +1 -1
- package/lib/commonjs/lib/sonner.native.js +24 -0
- package/lib/commonjs/lib/sonner.native.js.map +1 -0
- package/lib/commonjs/lib/sonner.web.js +24 -0
- package/lib/commonjs/lib/sonner.web.js.map +1 -0
- package/lib/commonjs/shared/index.js +227 -0
- package/lib/commonjs/shared/index.js.map +1 -0
- package/lib/commonjs/shared/utils/colorUtils.js +161 -0
- package/lib/commonjs/shared/utils/colorUtils.js.map +1 -0
- package/lib/commonjs/shared/utils/debugUtils.js +84 -0
- package/lib/commonjs/shared/utils/debugUtils.js.map +1 -0
- package/lib/commonjs/shared/utils/errorUtils.js +190 -0
- package/lib/commonjs/shared/utils/errorUtils.js.map +1 -0
- package/lib/commonjs/shared/utils/index.js +196 -0
- package/lib/commonjs/shared/utils/index.js.map +1 -0
- package/lib/commonjs/shared/utils/networkUtils.js +213 -0
- package/lib/commonjs/shared/utils/networkUtils.js.map +1 -0
- package/lib/commonjs/shared/utils/themeUtils.js +118 -0
- package/lib/commonjs/shared/utils/themeUtils.js.map +1 -0
- package/lib/commonjs/ui/client.js +1 -1
- package/lib/commonjs/ui/components/BottomSheetRouter.js +1 -1
- package/lib/commonjs/ui/components/FollowButton.js +1 -1
- package/lib/commonjs/ui/components/FontLoader.js +1 -1
- package/lib/commonjs/ui/components/FontLoader.js.map +1 -1
- package/lib/commonjs/ui/components/GroupedItem.js +1 -1
- package/lib/commonjs/ui/components/Header.js +1 -1
- package/lib/commonjs/ui/components/OxyProvider.js +10 -2
- package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
- package/lib/commonjs/ui/components/OxySignInButton.js +19 -20
- package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
- package/lib/commonjs/ui/components/ProfileCard.js +1 -1
- package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
- package/lib/commonjs/ui/components/QuickActions.js +1 -1
- package/lib/commonjs/ui/components/QuickActions.js.map +1 -1
- package/lib/commonjs/ui/components/Section.js +1 -1
- package/lib/commonjs/ui/components/SectionTitle.js +1 -1
- package/lib/commonjs/ui/components/SignInModal.js +546 -0
- package/lib/commonjs/ui/components/SignInModal.js.map +1 -0
- package/lib/commonjs/ui/components/payment/PaymentDetailsStep.js +1 -1
- package/lib/commonjs/ui/context/OxyContext.js +3 -2
- package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
- package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +1 -1
- package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +1 -1
- package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +1 -1
- package/lib/commonjs/ui/hooks/useAsyncAction.js +1 -1
- package/lib/commonjs/ui/hooks/{use-color-scheme.js → useColorScheme.js} +1 -1
- package/lib/commonjs/ui/hooks/useColorScheme.js.map +1 -0
- package/lib/commonjs/ui/hooks/useSessionSocket.js +7 -13
- package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/commonjs/ui/hooks/useSettingToggle.js +1 -1
- package/lib/commonjs/ui/hooks/useThemeColors.js +1 -1
- package/lib/commonjs/ui/hooks/useThemeStyles.js +1 -1
- package/lib/commonjs/ui/navigation/bottomSheetManager.js +5 -2
- package/lib/commonjs/ui/navigation/bottomSheetManager.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +7 -8
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountCenterScreen.js +8 -8
- package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js +7 -7
- package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountSettingsScreen.js +3 -3
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +5 -5
- package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/AccountVerificationScreen.js +1 -1
- package/lib/commonjs/ui/screens/AppInfoScreen.js +2 -2
- package/lib/commonjs/ui/screens/EditProfileFieldScreen.js +2 -2
- package/lib/commonjs/ui/screens/FAQScreen.js +1 -1
- package/lib/commonjs/ui/screens/FeedbackScreen.js +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +2 -2
- package/lib/commonjs/ui/screens/FollowersListScreen.js +18 -0
- package/lib/commonjs/ui/screens/FollowersListScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/FollowingListScreen.js +18 -0
- package/lib/commonjs/ui/screens/FollowingListScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/HelpSupportScreen.js +2 -2
- package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/HistoryViewScreen.js +2 -2
- package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +2 -2
- package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js +229 -0
- package/lib/commonjs/ui/screens/LearnMoreUsernamesScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +2 -2
- package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/OxyAuthScreen.js +9 -21
- package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +2 -2
- package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js +1 -1
- package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +2 -2
- package/lib/commonjs/ui/screens/SessionManagementScreen.js +1 -1
- package/lib/commonjs/ui/screens/UserListScreen.js +411 -0
- package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +1 -1
- package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +1 -1
- package/lib/commonjs/ui/stores/authStore.js +4 -6
- package/lib/commonjs/ui/stores/authStore.js.map +1 -1
- package/lib/commonjs/ui/utils/colorUtils.js +43 -46
- package/lib/commonjs/ui/utils/colorUtils.js.map +1 -1
- package/lib/commonjs/ui/utils/fileManagement.js +1 -1
- package/lib/commonjs/ui/utils/themeUtils.js +29 -39
- package/lib/commonjs/ui/utils/themeUtils.js.map +1 -1
- package/lib/commonjs/ui/utils/{user-utils.js → userUtils.js} +1 -1
- package/lib/commonjs/ui/utils/userUtils.js.map +1 -0
- package/lib/commonjs/utils/errorUtils.js +0 -13
- package/lib/commonjs/utils/errorUtils.js.map +1 -1
- package/lib/commonjs/utils/hookUtils.js +8 -8
- package/lib/commonjs/utils/hookUtils.js.map +1 -1
- package/lib/commonjs/utils/platform.js +129 -0
- package/lib/commonjs/utils/platform.js.map +1 -0
- package/lib/commonjs/web/WebOxyContext.js +273 -41
- package/lib/commonjs/web/WebOxyContext.js.map +1 -1
- package/lib/commonjs/web/index.js +177 -4
- package/lib/commonjs/web/index.js.map +1 -1
- package/lib/commonjs/web.js +12 -12
- package/lib/commonjs/web.js.map +1 -1
- package/lib/module/core/AuthManager.js +399 -0
- package/lib/module/core/AuthManager.js.map +1 -0
- package/lib/module/core/HttpService.js +39 -1
- package/lib/module/core/HttpService.js.map +1 -1
- package/lib/module/core/index.js +2 -0
- package/lib/module/core/index.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.fedcm.js +38 -44
- package/lib/module/core/mixins/OxyServices.fedcm.js.map +1 -1
- package/lib/module/core/mixins/OxyServices.popup.js +9 -7
- package/lib/module/core/mixins/OxyServices.popup.js.map +1 -1
- package/lib/module/crypto/keyManager.js +16 -21
- package/lib/module/crypto/keyManager.js.map +1 -1
- package/lib/module/index.js +34 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/lib/sonner.js +11 -16
- package/lib/module/lib/sonner.js.map +1 -1
- package/lib/module/lib/sonner.native.js +19 -0
- package/lib/module/lib/sonner.native.js.map +1 -0
- package/lib/module/lib/sonner.web.js +19 -0
- package/lib/module/lib/sonner.web.js.map +1 -0
- package/lib/module/shared/index.js +37 -0
- package/lib/module/shared/index.js.map +1 -0
- package/lib/module/shared/utils/colorUtils.js +150 -0
- package/lib/module/shared/utils/colorUtils.js.map +1 -0
- package/lib/module/shared/utils/debugUtils.js +75 -0
- package/lib/module/shared/utils/debugUtils.js.map +1 -0
- package/lib/module/shared/utils/errorUtils.js +176 -0
- package/lib/module/shared/utils/errorUtils.js.map +1 -0
- package/lib/module/shared/utils/index.js +21 -0
- package/lib/module/shared/utils/index.js.map +1 -0
- package/lib/module/shared/utils/networkUtils.js +202 -0
- package/lib/module/shared/utils/networkUtils.js.map +1 -0
- package/lib/module/shared/utils/themeUtils.js +109 -0
- package/lib/module/shared/utils/themeUtils.js.map +1 -0
- package/lib/module/ui/client.js +1 -1
- package/lib/module/ui/client.js.map +1 -1
- package/lib/module/ui/components/BottomSheetRouter.js +1 -1
- package/lib/module/ui/components/BottomSheetRouter.js.map +1 -1
- package/lib/module/ui/components/FollowButton.js +1 -1
- package/lib/module/ui/components/FollowButton.js.map +1 -1
- package/lib/module/ui/components/FontLoader.js +1 -1
- package/lib/module/ui/components/FontLoader.js.map +1 -1
- package/lib/module/ui/components/GroupedItem.js +1 -1
- package/lib/module/ui/components/GroupedItem.js.map +1 -1
- package/lib/module/ui/components/Header.js +1 -1
- package/lib/module/ui/components/Header.js.map +1 -1
- package/lib/module/ui/components/OxyProvider.js +10 -2
- package/lib/module/ui/components/OxyProvider.js.map +1 -1
- package/lib/module/ui/components/OxySignInButton.js +20 -21
- package/lib/module/ui/components/OxySignInButton.js.map +1 -1
- package/lib/module/ui/components/ProfileCard.js +1 -1
- package/lib/module/ui/components/ProfileCard.js.map +1 -1
- package/lib/module/ui/components/QuickActions.js +1 -1
- package/lib/module/ui/components/QuickActions.js.map +1 -1
- package/lib/module/ui/components/Section.js +1 -1
- package/lib/module/ui/components/Section.js.map +1 -1
- package/lib/module/ui/components/SectionTitle.js +1 -1
- package/lib/module/ui/components/SectionTitle.js.map +1 -1
- package/lib/module/ui/components/SignInModal.js +536 -0
- package/lib/module/ui/components/SignInModal.js.map +1 -0
- package/lib/module/ui/components/payment/PaymentDetailsStep.js +1 -1
- package/lib/module/ui/components/payment/PaymentDetailsStep.js.map +1 -1
- package/lib/module/ui/context/OxyContext.js +2 -2
- package/lib/module/ui/context/OxyContext.js.map +1 -1
- package/lib/module/ui/hooks/mutations/mutationFactory.js +1 -1
- package/lib/module/ui/hooks/mutations/mutationFactory.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js +1 -1
- package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
- package/lib/module/ui/hooks/mutations/useServicesMutations.js +1 -1
- package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
- package/lib/module/ui/hooks/useAsyncAction.js +1 -1
- package/lib/module/ui/hooks/useAsyncAction.js.map +1 -1
- package/lib/module/ui/hooks/{use-color-scheme.js → useColorScheme.js} +1 -1
- package/lib/module/ui/hooks/useColorScheme.js.map +1 -0
- package/lib/module/ui/hooks/useSessionSocket.js +7 -13
- package/lib/module/ui/hooks/useSessionSocket.js.map +1 -1
- package/lib/module/ui/hooks/useSettingToggle.js +1 -1
- package/lib/module/ui/hooks/useSettingToggle.js.map +1 -1
- package/lib/module/ui/hooks/useThemeColors.js +1 -1
- package/lib/module/ui/hooks/useThemeColors.js.map +1 -1
- package/lib/module/ui/hooks/useThemeStyles.js +1 -1
- package/lib/module/ui/hooks/useThemeStyles.js.map +1 -1
- package/lib/module/ui/navigation/bottomSheetManager.js +5 -2
- package/lib/module/ui/navigation/bottomSheetManager.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +7 -8
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/screens/AccountCenterScreen.js +8 -8
- package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountOverviewScreen.js +7 -7
- package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSettingsScreen.js +3 -3
- package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountSwitcherScreen.js +5 -5
- package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js +1 -1
- package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
- package/lib/module/ui/screens/AppInfoScreen.js +2 -2
- package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
- package/lib/module/ui/screens/EditProfileFieldScreen.js +2 -2
- package/lib/module/ui/screens/EditProfileFieldScreen.js.map +1 -1
- package/lib/module/ui/screens/FAQScreen.js +1 -1
- package/lib/module/ui/screens/FAQScreen.js.map +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js +1 -1
- package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +2 -2
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/FollowersListScreen.js +13 -0
- package/lib/module/ui/screens/FollowersListScreen.js.map +1 -0
- package/lib/module/ui/screens/FollowingListScreen.js +13 -0
- package/lib/module/ui/screens/FollowingListScreen.js.map +1 -0
- package/lib/module/ui/screens/HelpSupportScreen.js +2 -2
- package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
- package/lib/module/ui/screens/HistoryViewScreen.js +2 -2
- package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
- package/lib/module/ui/screens/LanguageSelectorScreen.js +2 -2
- package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
- package/lib/module/ui/screens/LearnMoreUsernamesScreen.js +224 -0
- package/lib/module/ui/screens/LearnMoreUsernamesScreen.js.map +1 -0
- package/lib/module/ui/screens/LegalDocumentsScreen.js +2 -2
- package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
- package/lib/module/ui/screens/OxyAuthScreen.js +9 -21
- package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -1
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js +2 -2
- package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js +1 -1
- package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
- package/lib/module/ui/screens/ProfileScreen.js +1 -1
- package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
- package/lib/module/ui/screens/SavesCollectionsScreen.js +2 -2
- package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js +1 -1
- package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/UserListScreen.js +405 -0
- package/lib/module/ui/screens/UserListScreen.js.map +1 -0
- package/lib/module/ui/screens/WelcomeNewUserScreen.js +1 -1
- package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js +1 -1
- package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
- package/lib/module/ui/stores/authStore.js +4 -6
- package/lib/module/ui/stores/authStore.js.map +1 -1
- package/lib/module/ui/utils/colorUtils.js +7 -40
- package/lib/module/ui/utils/colorUtils.js.map +1 -1
- package/lib/module/ui/utils/fileManagement.js +1 -1
- package/lib/module/ui/utils/fileManagement.js.map +1 -1
- package/lib/module/ui/utils/themeUtils.js +7 -35
- package/lib/module/ui/utils/themeUtils.js.map +1 -1
- package/lib/module/ui/utils/{user-utils.js → userUtils.js} +1 -1
- package/lib/module/ui/utils/userUtils.js.map +1 -0
- package/lib/module/utils/errorUtils.js +0 -7
- package/lib/module/utils/errorUtils.js.map +1 -1
- package/lib/module/utils/hookUtils.js +8 -8
- package/lib/module/utils/hookUtils.js.map +1 -1
- package/lib/module/utils/platform.js +118 -0
- package/lib/module/utils/platform.js.map +1 -0
- package/lib/module/web/WebOxyContext.js +272 -41
- package/lib/module/web/WebOxyContext.js.map +1 -1
- package/lib/module/web/index.js +26 -5
- package/lib/module/web/index.js.map +1 -1
- package/lib/module/web.js +2 -1
- package/lib/module/web.js.map +1 -1
- package/lib/typescript/commonjs/core/AuthManager.d.ts +144 -0
- package/lib/typescript/commonjs/core/AuthManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/core/HttpService.d.ts.map +1 -1
- package/lib/typescript/commonjs/core/index.d.ts +2 -0
- package/lib/typescript/commonjs/core/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.fedcm.d.ts.map +1 -1
- package/lib/typescript/commonjs/core/mixins/OxyServices.popup.d.ts.map +1 -1
- package/lib/typescript/commonjs/crypto/keyManager.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +16 -2
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/lib/sonner.d.ts +11 -14
- package/lib/typescript/commonjs/lib/sonner.d.ts.map +1 -1
- package/lib/typescript/commonjs/lib/sonner.native.d.ts +15 -0
- package/lib/typescript/commonjs/lib/sonner.native.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/sonner.web.d.ts +15 -0
- package/lib/typescript/commonjs/lib/sonner.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/models/session.d.ts +4 -0
- package/lib/typescript/commonjs/models/session.d.ts.map +1 -1
- package/lib/typescript/commonjs/shared/index.d.ts +29 -0
- package/lib/typescript/commonjs/shared/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/colorUtils.d.ts +105 -0
- package/lib/typescript/commonjs/shared/utils/colorUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/debugUtils.d.ts +49 -0
- package/lib/typescript/commonjs/shared/utils/debugUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/errorUtils.d.ts +98 -0
- package/lib/typescript/commonjs/shared/utils/errorUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/index.d.ts +14 -0
- package/lib/typescript/commonjs/shared/utils/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/networkUtils.d.ts +140 -0
- package/lib/typescript/commonjs/shared/utils/networkUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/shared/utils/themeUtils.d.ts +91 -0
- package/lib/typescript/commonjs/shared/utils/themeUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/FontLoader.d.ts +1 -1
- package/lib/typescript/commonjs/ui/components/FontLoader.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts +18 -0
- package/lib/typescript/commonjs/ui/components/SignInModal.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts +1 -2
- package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/{use-color-scheme.d.ts → useColorScheme.d.ts} +1 -1
- package/lib/typescript/commonjs/ui/hooks/useColorScheme.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/useSessionSocket.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts +2 -0
- package/lib/typescript/commonjs/ui/navigation/bottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts +9 -0
- package/lib/typescript/commonjs/ui/screens/FollowersListScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts +9 -0
- package/lib/typescript/commonjs/ui/screens/FollowingListScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts +5 -0
- package/lib/typescript/commonjs/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts +11 -0
- package/lib/typescript/commonjs/ui/screens/UserListScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/colorUtils.d.ts +7 -11
- package/lib/typescript/commonjs/ui/utils/colorUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/themeUtils.d.ts +6 -19
- package/lib/typescript/commonjs/ui/utils/themeUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/{user-utils.d.ts → userUtils.d.ts} +1 -1
- package/lib/typescript/commonjs/ui/utils/userUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/errorUtils.d.ts +0 -6
- package/lib/typescript/commonjs/utils/errorUtils.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/platform.d.ts +41 -0
- package/lib/typescript/commonjs/utils/platform.d.ts.map +1 -0
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts +117 -9
- package/lib/typescript/commonjs/web/WebOxyContext.d.ts.map +1 -1
- package/lib/typescript/commonjs/web/index.d.ts +19 -8
- package/lib/typescript/commonjs/web/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/web.d.ts +2 -1
- package/lib/typescript/commonjs/web.d.ts.map +1 -1
- package/lib/typescript/module/core/AuthManager.d.ts +144 -0
- package/lib/typescript/module/core/AuthManager.d.ts.map +1 -0
- package/lib/typescript/module/core/HttpService.d.ts.map +1 -1
- package/lib/typescript/module/core/index.d.ts +2 -0
- package/lib/typescript/module/core/index.d.ts.map +1 -1
- package/lib/typescript/module/core/mixins/OxyServices.fedcm.d.ts.map +1 -1
- package/lib/typescript/module/core/mixins/OxyServices.popup.d.ts.map +1 -1
- package/lib/typescript/module/crypto/keyManager.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +16 -2
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/lib/sonner.d.ts +11 -14
- package/lib/typescript/module/lib/sonner.d.ts.map +1 -1
- package/lib/typescript/module/lib/sonner.native.d.ts +15 -0
- package/lib/typescript/module/lib/sonner.native.d.ts.map +1 -0
- package/lib/typescript/module/lib/sonner.web.d.ts +15 -0
- package/lib/typescript/module/lib/sonner.web.d.ts.map +1 -0
- package/lib/typescript/module/models/session.d.ts +4 -0
- package/lib/typescript/module/models/session.d.ts.map +1 -1
- package/lib/typescript/module/shared/index.d.ts +29 -0
- package/lib/typescript/module/shared/index.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/colorUtils.d.ts +105 -0
- package/lib/typescript/module/shared/utils/colorUtils.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/debugUtils.d.ts +49 -0
- package/lib/typescript/module/shared/utils/debugUtils.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/errorUtils.d.ts +98 -0
- package/lib/typescript/module/shared/utils/errorUtils.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/index.d.ts +14 -0
- package/lib/typescript/module/shared/utils/index.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/networkUtils.d.ts +140 -0
- package/lib/typescript/module/shared/utils/networkUtils.d.ts.map +1 -0
- package/lib/typescript/module/shared/utils/themeUtils.d.ts +91 -0
- package/lib/typescript/module/shared/utils/themeUtils.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/FontLoader.d.ts +1 -1
- package/lib/typescript/module/ui/components/FontLoader.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxyProvider.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/OxySignInButton.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/SignInModal.d.ts +18 -0
- package/lib/typescript/module/ui/components/SignInModal.d.ts.map +1 -0
- package/lib/typescript/module/ui/context/OxyContext.d.ts +1 -2
- package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/{use-color-scheme.d.ts → useColorScheme.d.ts} +1 -1
- package/lib/typescript/module/ui/hooks/useColorScheme.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/useSessionSocket.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts +2 -0
- package/lib/typescript/module/ui/navigation/bottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts +9 -0
- package/lib/typescript/module/ui/screens/FollowersListScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts +9 -0
- package/lib/typescript/module/ui/screens/FollowingListScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts +5 -0
- package/lib/typescript/module/ui/screens/LearnMoreUsernamesScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/OxyAuthScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/UserListScreen.d.ts +11 -0
- package/lib/typescript/module/ui/screens/UserListScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/stores/authStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/colorUtils.d.ts +7 -11
- package/lib/typescript/module/ui/utils/colorUtils.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/themeUtils.d.ts +6 -19
- package/lib/typescript/module/ui/utils/themeUtils.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/{user-utils.d.ts → userUtils.d.ts} +1 -1
- package/lib/typescript/module/ui/utils/userUtils.d.ts.map +1 -0
- package/lib/typescript/module/utils/errorUtils.d.ts +0 -6
- package/lib/typescript/module/utils/errorUtils.d.ts.map +1 -1
- package/lib/typescript/module/utils/platform.d.ts +41 -0
- package/lib/typescript/module/utils/platform.d.ts.map +1 -0
- package/lib/typescript/module/web/WebOxyContext.d.ts +117 -9
- package/lib/typescript/module/web/WebOxyContext.d.ts.map +1 -1
- package/lib/typescript/module/web/index.d.ts +19 -8
- package/lib/typescript/module/web/index.d.ts.map +1 -1
- package/lib/typescript/module/web.d.ts +2 -1
- package/lib/typescript/module/web.d.ts.map +1 -1
- package/package.json +8 -2
- package/src/core/AuthManager.ts +436 -0
- package/src/core/HttpService.ts +43 -1
- package/src/core/index.ts +4 -0
- package/src/core/mixins/OxyServices.fedcm.ts +37 -42
- package/src/core/mixins/OxyServices.popup.ts +10 -7
- package/src/crypto/keyManager.ts +16 -21
- package/src/index.ts +83 -12
- package/src/lib/sonner.native.ts +28 -0
- package/src/lib/sonner.ts +11 -28
- package/src/lib/sonner.web.ts +28 -0
- package/src/models/session.ts +4 -0
- package/src/shared/index.ts +82 -0
- package/src/shared/utils/colorUtils.ts +155 -0
- package/src/shared/utils/debugUtils.ts +73 -0
- package/src/shared/utils/errorUtils.ts +181 -0
- package/src/shared/utils/index.ts +59 -0
- package/src/shared/utils/networkUtils.ts +248 -0
- package/src/shared/utils/themeUtils.ts +115 -0
- package/src/ui/components/BottomSheetRouter.tsx +1 -1
- package/src/ui/components/FontLoader.tsx +1 -2
- package/src/ui/components/GroupedItem.tsx +1 -1
- package/src/ui/components/Header.tsx +1 -1
- package/src/ui/components/OxyProvider.tsx +10 -0
- package/src/ui/components/OxySignInButton.tsx +20 -22
- package/src/ui/components/ProfileCard.tsx +1 -1
- package/src/ui/components/QuickActions.tsx +1 -1
- package/src/ui/components/Section.tsx +1 -1
- package/src/ui/components/SectionTitle.tsx +1 -1
- package/src/ui/components/SignInModal.tsx +534 -0
- package/src/ui/context/OxyContext.tsx +1 -2
- package/src/ui/hooks/queries/queryKeys.ts +2 -2
- package/src/ui/hooks/useSessionSocket.ts +12 -17
- package/src/ui/hooks/useThemeColors.ts +1 -1
- package/src/ui/hooks/useThemeStyles.ts +1 -1
- package/src/ui/navigation/bottomSheetManager.ts +5 -1
- package/src/ui/navigation/routes.ts +8 -9
- package/src/ui/screens/AccountCenterScreen.tsx +7 -7
- package/src/ui/screens/AccountOverviewScreen.tsx +6 -6
- package/src/ui/screens/AccountSettingsScreen.tsx +2 -2
- package/src/ui/screens/AccountSwitcherScreen.tsx +4 -4
- package/src/ui/screens/AppInfoScreen.tsx +1 -1
- package/src/ui/screens/EditProfileFieldScreen.tsx +1 -1
- package/src/ui/screens/FileManagementScreen.tsx +1 -1
- package/src/ui/screens/FollowersListScreen.tsx +14 -0
- package/src/ui/screens/FollowingListScreen.tsx +14 -0
- package/src/ui/screens/HelpSupportScreen.tsx +1 -1
- package/src/ui/screens/HistoryViewScreen.tsx +1 -1
- package/src/ui/screens/LanguageSelectorScreen.tsx +1 -1
- package/src/ui/screens/LearnMoreUsernamesScreen.tsx +231 -0
- package/src/ui/screens/LegalDocumentsScreen.tsx +1 -1
- package/src/ui/screens/OxyAuthScreen.tsx +10 -21
- package/src/ui/screens/PremiumSubscriptionScreen.tsx +1 -1
- package/src/ui/screens/ProfileScreen.tsx +1 -1
- package/src/ui/screens/SavesCollectionsScreen.tsx +1 -1
- package/src/ui/screens/UserListScreen.tsx +416 -0
- package/src/ui/screens/karma/KarmaAboutScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaCenterScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaFAQScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaRewardsScreen.tsx +1 -1
- package/src/ui/screens/karma/KarmaRulesScreen.tsx +1 -1
- package/src/ui/stores/authStore.ts +5 -6
- package/src/ui/utils/colorUtils.ts +15 -43
- package/src/ui/utils/themeUtils.ts +14 -39
- package/src/utils/errorUtils.ts +1 -6
- package/src/utils/hookUtils.ts +8 -8
- package/src/utils/platform.ts +117 -0
- package/src/web/WebOxyContext.tsx +331 -41
- package/src/web/index.ts +76 -6
- package/src/web.ts +1 -1
- package/lib/commonjs/ui/hooks/use-color-scheme.js.map +0 -1
- package/lib/commonjs/ui/utils/user-utils.js.map +0 -1
- package/lib/module/ui/hooks/use-color-scheme.js.map +0 -1
- package/lib/module/ui/utils/user-utils.js.map +0 -1
- package/lib/typescript/commonjs/ui/hooks/use-color-scheme.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/utils/user-utils.d.ts.map +0 -1
- package/lib/typescript/module/ui/hooks/use-color-scheme.d.ts.map +0 -1
- package/lib/typescript/module/ui/utils/user-utils.d.ts.map +0 -1
- /package/src/ui/hooks/{use-color-scheme.ts → useColorScheme.ts} +0 -0
- /package/src/ui/utils/{user-utils.ts → userUtils.ts} +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sonner Toast - Web Implementation
|
|
3
|
+
*
|
|
4
|
+
* This file is resolved by web bundlers (Vite, Webpack, etc.)
|
|
5
|
+
* Only imports 'sonner' (web version), not 'sonner-native'
|
|
6
|
+
*/
|
|
7
|
+
import * as WebSonner from 'sonner';
|
|
8
|
+
|
|
9
|
+
// Define proper types for the toast components
|
|
10
|
+
interface ToastFunction {
|
|
11
|
+
(message: string, options?: Record<string, unknown>): void;
|
|
12
|
+
success: (message: string, options?: Record<string, unknown>) => void;
|
|
13
|
+
error: (message: string, options?: Record<string, unknown>) => void;
|
|
14
|
+
info: (message: string, options?: Record<string, unknown>) => void;
|
|
15
|
+
warning: (message: string, options?: Record<string, unknown>) => void;
|
|
16
|
+
loading: (message: string, options?: Record<string, unknown>) => void;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type ToasterComponent = (props?: Record<string, unknown>) => React.ReactElement | null;
|
|
20
|
+
|
|
21
|
+
const { toast: webToast, Toaster: WebToaster } = WebSonner as {
|
|
22
|
+
toast: ToastFunction;
|
|
23
|
+
Toaster: ToasterComponent;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const toast = webToast;
|
|
27
|
+
export const Toaster = WebToaster;
|
|
28
|
+
export type ToastT = typeof webToast;
|
package/src/models/session.ts
CHANGED
|
@@ -23,4 +23,8 @@ export interface SessionLoginResponse {
|
|
|
23
23
|
deviceId: string;
|
|
24
24
|
expiresAt: string;
|
|
25
25
|
user: MinimalUserData;
|
|
26
|
+
/** JWT access token for API authentication */
|
|
27
|
+
accessToken?: string;
|
|
28
|
+
/** Refresh token for obtaining new access tokens */
|
|
29
|
+
refreshToken?: string;
|
|
26
30
|
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OxyServices Shared Module
|
|
3
|
+
*
|
|
4
|
+
* Platform-agnostic utilities and helpers that work everywhere:
|
|
5
|
+
* - Browser (Web, Expo Web)
|
|
6
|
+
* - React Native (iOS, Android)
|
|
7
|
+
* - Node.js (Backend)
|
|
8
|
+
*
|
|
9
|
+
* This module contains NO React Native or browser-specific dependencies.
|
|
10
|
+
*
|
|
11
|
+
* @module shared
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { darkenColor, normalizeTheme, withRetry } from '@oxyhq/services/shared';
|
|
16
|
+
*
|
|
17
|
+
* const darkBlue = darkenColor('#0066FF', 0.3);
|
|
18
|
+
* const theme = normalizeTheme(userPreference);
|
|
19
|
+
* const data = await withRetry(() => fetchData(), { maxRetries: 3 });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
// Color utilities
|
|
24
|
+
export {
|
|
25
|
+
darkenColor,
|
|
26
|
+
lightenColor,
|
|
27
|
+
hexToRgb,
|
|
28
|
+
rgbToHex,
|
|
29
|
+
withOpacity,
|
|
30
|
+
isLightColor,
|
|
31
|
+
getContrastTextColor,
|
|
32
|
+
} from './utils/colorUtils';
|
|
33
|
+
|
|
34
|
+
// Theme utilities
|
|
35
|
+
export {
|
|
36
|
+
normalizeTheme,
|
|
37
|
+
normalizeColorScheme,
|
|
38
|
+
getOppositeTheme,
|
|
39
|
+
systemPrefersDarkMode,
|
|
40
|
+
getSystemColorScheme,
|
|
41
|
+
} from './utils/themeUtils';
|
|
42
|
+
export type { ThemeValue } from './utils/themeUtils';
|
|
43
|
+
|
|
44
|
+
// Error utilities
|
|
45
|
+
export {
|
|
46
|
+
HttpStatus,
|
|
47
|
+
getErrorStatus,
|
|
48
|
+
getErrorMessage,
|
|
49
|
+
isAlreadyRegisteredError,
|
|
50
|
+
isUnauthorizedError,
|
|
51
|
+
isForbiddenError,
|
|
52
|
+
isNotFoundError,
|
|
53
|
+
isRateLimitError,
|
|
54
|
+
isServerError,
|
|
55
|
+
isNetworkError,
|
|
56
|
+
isRetryableError,
|
|
57
|
+
} from './utils/errorUtils';
|
|
58
|
+
|
|
59
|
+
// Network utilities
|
|
60
|
+
export {
|
|
61
|
+
DEFAULT_CIRCUIT_BREAKER_CONFIG,
|
|
62
|
+
createCircuitBreakerState,
|
|
63
|
+
calculateBackoffInterval,
|
|
64
|
+
recordFailure,
|
|
65
|
+
recordSuccess,
|
|
66
|
+
shouldAllowRequest,
|
|
67
|
+
delay,
|
|
68
|
+
withRetry,
|
|
69
|
+
} from './utils/networkUtils';
|
|
70
|
+
export type {
|
|
71
|
+
CircuitBreakerState,
|
|
72
|
+
CircuitBreakerConfig,
|
|
73
|
+
} from './utils/networkUtils';
|
|
74
|
+
|
|
75
|
+
// Debug utilities
|
|
76
|
+
export {
|
|
77
|
+
isDev,
|
|
78
|
+
debugLog,
|
|
79
|
+
debugWarn,
|
|
80
|
+
debugError,
|
|
81
|
+
createDebugLogger,
|
|
82
|
+
} from './utils/debugUtils';
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Consolidated color manipulation utilities used across the OxyServices ecosystem.
|
|
5
|
+
* These functions work in any JavaScript environment (browser, Node.js, React Native).
|
|
6
|
+
*
|
|
7
|
+
* @module shared/utils/colorUtils
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Darkens a hex color by a specified factor.
|
|
12
|
+
*
|
|
13
|
+
* @param color - Hex color string (with or without #)
|
|
14
|
+
* @param factor - Amount to darken (0-1). Default: 0.6
|
|
15
|
+
* @returns Darkened hex color string with # prefix
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* darkenColor('#FF0000', 0.5); // Returns a darker red
|
|
20
|
+
* darkenColor('FF0000', 0.3); // Also works without #
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export const darkenColor = (color: string, factor: number = 0.6): string => {
|
|
24
|
+
const hex = color.replace('#', '');
|
|
25
|
+
|
|
26
|
+
const r = parseInt(hex.substring(0, 2), 16);
|
|
27
|
+
const g = parseInt(hex.substring(2, 4), 16);
|
|
28
|
+
const b = parseInt(hex.substring(4, 6), 16);
|
|
29
|
+
|
|
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
|
+
|
|
34
|
+
return `#${newR.toString(16).padStart(2, '0')}${newG.toString(16).padStart(2, '0')}${newB.toString(16).padStart(2, '0')}`;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Lightens a hex color by a specified factor.
|
|
39
|
+
*
|
|
40
|
+
* @param color - Hex color string (with or without #)
|
|
41
|
+
* @param factor - Amount to lighten (0-1). Default: 0.3
|
|
42
|
+
* @returns Lightened hex color string with # prefix
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* lightenColor('#0000FF', 0.5); // Returns a lighter blue
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export const lightenColor = (color: string, factor: number = 0.3): string => {
|
|
50
|
+
const hex = color.replace('#', '');
|
|
51
|
+
|
|
52
|
+
const r = parseInt(hex.substring(0, 2), 16);
|
|
53
|
+
const g = parseInt(hex.substring(2, 4), 16);
|
|
54
|
+
const b = parseInt(hex.substring(4, 6), 16);
|
|
55
|
+
|
|
56
|
+
const newR = Math.min(255, Math.round(r + (255 - r) * factor));
|
|
57
|
+
const newG = Math.min(255, Math.round(g + (255 - g) * factor));
|
|
58
|
+
const newB = Math.min(255, Math.round(b + (255 - b) * factor));
|
|
59
|
+
|
|
60
|
+
return `#${newR.toString(16).padStart(2, '0')}${newG.toString(16).padStart(2, '0')}${newB.toString(16).padStart(2, '0')}`;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Converts a hex color to RGB values.
|
|
65
|
+
*
|
|
66
|
+
* @param hex - Hex color string (with or without #)
|
|
67
|
+
* @returns Object with r, g, b values (0-255)
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* hexToRgb('#FF5733'); // { r: 255, g: 87, b: 51 }
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export const hexToRgb = (hex: string): { r: number; g: number; b: number } | null => {
|
|
75
|
+
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
|
|
76
|
+
return result
|
|
77
|
+
? {
|
|
78
|
+
r: parseInt(result[1], 16),
|
|
79
|
+
g: parseInt(result[2], 16),
|
|
80
|
+
b: parseInt(result[3], 16),
|
|
81
|
+
}
|
|
82
|
+
: null;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Converts RGB values to a hex color string.
|
|
87
|
+
*
|
|
88
|
+
* @param r - Red value (0-255)
|
|
89
|
+
* @param g - Green value (0-255)
|
|
90
|
+
* @param b - Blue value (0-255)
|
|
91
|
+
* @returns Hex color string with # prefix
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```ts
|
|
95
|
+
* rgbToHex(255, 87, 51); // '#ff5733'
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export const rgbToHex = (r: number, g: number, b: number): string => {
|
|
99
|
+
return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Adjusts the opacity of a hex color, returning an rgba string.
|
|
104
|
+
*
|
|
105
|
+
* @param hex - Hex color string
|
|
106
|
+
* @param opacity - Opacity value (0-1)
|
|
107
|
+
* @returns RGBA color string
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```ts
|
|
111
|
+
* withOpacity('#FF0000', 0.5); // 'rgba(255, 0, 0, 0.5)'
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export const withOpacity = (hex: string, opacity: number): string => {
|
|
115
|
+
const rgb = hexToRgb(hex);
|
|
116
|
+
if (!rgb) return hex;
|
|
117
|
+
return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${opacity})`;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Checks if a color is considered "light" (for determining text contrast).
|
|
122
|
+
*
|
|
123
|
+
* @param hex - Hex color string
|
|
124
|
+
* @returns true if the color is light, false if dark
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```ts
|
|
128
|
+
* isLightColor('#FFFFFF'); // true
|
|
129
|
+
* isLightColor('#000000'); // false
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export const isLightColor = (hex: string): boolean => {
|
|
133
|
+
const rgb = hexToRgb(hex);
|
|
134
|
+
if (!rgb) return true;
|
|
135
|
+
|
|
136
|
+
// Using relative luminance formula
|
|
137
|
+
const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;
|
|
138
|
+
return luminance > 0.5;
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Gets a contrasting text color (black or white) for a given background color.
|
|
143
|
+
*
|
|
144
|
+
* @param backgroundColor - Hex color string of the background
|
|
145
|
+
* @returns '#000000' for light backgrounds, '#ffffff' for dark backgrounds
|
|
146
|
+
*
|
|
147
|
+
* @example
|
|
148
|
+
* ```ts
|
|
149
|
+
* getContrastTextColor('#FFFF00'); // '#000000' (black text on yellow)
|
|
150
|
+
* getContrastTextColor('#000080'); // '#ffffff' (white text on navy)
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export const getContrastTextColor = (backgroundColor: string): string => {
|
|
154
|
+
return isLightColor(backgroundColor) ? '#000000' : '#ffffff';
|
|
155
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides safe logging functions that only output in development mode.
|
|
5
|
+
* All logs are stripped in production builds.
|
|
6
|
+
*
|
|
7
|
+
* @module shared/utils/debugUtils
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* global __DEV__ */
|
|
11
|
+
declare const __DEV__: boolean | undefined;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Check if running in development mode
|
|
15
|
+
*/
|
|
16
|
+
export const isDev = (): boolean => {
|
|
17
|
+
return typeof __DEV__ !== 'undefined' && __DEV__;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Log a debug message (only in development)
|
|
22
|
+
* @param prefix - Log prefix (e.g., '[FedCM]')
|
|
23
|
+
* @param args - Arguments to log
|
|
24
|
+
*/
|
|
25
|
+
export const debugLog = (prefix: string, ...args: unknown[]): void => {
|
|
26
|
+
if (isDev()) {
|
|
27
|
+
console.log(prefix, ...args);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Log a debug warning (only in development)
|
|
33
|
+
* @param prefix - Log prefix
|
|
34
|
+
* @param args - Arguments to log
|
|
35
|
+
*/
|
|
36
|
+
export const debugWarn = (prefix: string, ...args: unknown[]): void => {
|
|
37
|
+
if (isDev()) {
|
|
38
|
+
console.warn(prefix, ...args);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Log a debug error (only in development)
|
|
44
|
+
* @param prefix - Log prefix
|
|
45
|
+
* @param args - Arguments to log
|
|
46
|
+
*/
|
|
47
|
+
export const debugError = (prefix: string, ...args: unknown[]): void => {
|
|
48
|
+
if (isDev()) {
|
|
49
|
+
console.error(prefix, ...args);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Create a namespaced debug logger
|
|
55
|
+
* @param namespace - Logger namespace (e.g., 'FedCM', 'PopupAuth')
|
|
56
|
+
* @returns Object with log, warn, error methods
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```ts
|
|
60
|
+
* const debug = createDebugLogger('FedCM');
|
|
61
|
+
* debug.log('Starting authentication');
|
|
62
|
+
* debug.warn('Token expires soon');
|
|
63
|
+
* debug.error('Authentication failed', error);
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export const createDebugLogger = (namespace: string) => {
|
|
67
|
+
const prefix = `[${namespace}]`;
|
|
68
|
+
return {
|
|
69
|
+
log: (...args: unknown[]) => debugLog(prefix, ...args),
|
|
70
|
+
warn: (...args: unknown[]) => debugWarn(prefix, ...args),
|
|
71
|
+
error: (...args: unknown[]) => debugError(prefix, ...args),
|
|
72
|
+
};
|
|
73
|
+
};
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Consolidated error handling utilities for the OxyServices ecosystem.
|
|
5
|
+
* These functions help with common error patterns like checking HTTP status codes.
|
|
6
|
+
*
|
|
7
|
+
* @module shared/utils/errorUtils
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Common HTTP status codes used in error checking.
|
|
12
|
+
*/
|
|
13
|
+
export const HttpStatus = {
|
|
14
|
+
BAD_REQUEST: 400,
|
|
15
|
+
UNAUTHORIZED: 401,
|
|
16
|
+
FORBIDDEN: 403,
|
|
17
|
+
NOT_FOUND: 404,
|
|
18
|
+
CONFLICT: 409,
|
|
19
|
+
UNPROCESSABLE_ENTITY: 422,
|
|
20
|
+
TOO_MANY_REQUESTS: 429,
|
|
21
|
+
INTERNAL_SERVER_ERROR: 500,
|
|
22
|
+
BAD_GATEWAY: 502,
|
|
23
|
+
SERVICE_UNAVAILABLE: 503,
|
|
24
|
+
GATEWAY_TIMEOUT: 504,
|
|
25
|
+
} as const;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Extracts the HTTP status code from an error object.
|
|
29
|
+
*
|
|
30
|
+
* @param error - Any error object
|
|
31
|
+
* @returns The status code if found, undefined otherwise
|
|
32
|
+
*/
|
|
33
|
+
export const getErrorStatus = (error: unknown): number | undefined => {
|
|
34
|
+
if (!error || typeof error !== 'object') return undefined;
|
|
35
|
+
|
|
36
|
+
const err = error as Record<string, unknown>;
|
|
37
|
+
|
|
38
|
+
// Direct status property
|
|
39
|
+
if (typeof err.status === 'number') return err.status;
|
|
40
|
+
|
|
41
|
+
// Axios-style response.status
|
|
42
|
+
if (err.response && typeof err.response === 'object') {
|
|
43
|
+
const response = err.response as Record<string, unknown>;
|
|
44
|
+
if (typeof response.status === 'number') return response.status;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// statusCode property (some libraries use this)
|
|
48
|
+
if (typeof err.statusCode === 'number') return err.statusCode;
|
|
49
|
+
|
|
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: unknown, fallback: string = 'An unknown error occurred'): string => {
|
|
61
|
+
if (!error) return fallback;
|
|
62
|
+
|
|
63
|
+
if (typeof error === 'string') return error;
|
|
64
|
+
|
|
65
|
+
if (error instanceof Error) return error.message;
|
|
66
|
+
|
|
67
|
+
if (typeof error === 'object') {
|
|
68
|
+
const err = error as Record<string, unknown>;
|
|
69
|
+
|
|
70
|
+
if (typeof err.message === 'string') return err.message;
|
|
71
|
+
if (typeof err.error === 'string') return err.error;
|
|
72
|
+
|
|
73
|
+
// Axios-style response.data.message
|
|
74
|
+
if (err.response && typeof err.response === 'object') {
|
|
75
|
+
const response = err.response as Record<string, unknown>;
|
|
76
|
+
if (response.data && typeof response.data === 'object') {
|
|
77
|
+
const data = response.data as Record<string, unknown>;
|
|
78
|
+
if (typeof data.message === 'string') return data.message;
|
|
79
|
+
if (typeof data.error === 'string') return data.error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return fallback;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Check if an error indicates the user is already registered (HTTP 409 Conflict).
|
|
89
|
+
*
|
|
90
|
+
* The backend should always return HTTP 409 for duplicate registrations.
|
|
91
|
+
*
|
|
92
|
+
* @param error - Any error object
|
|
93
|
+
* @returns true if the error is a 409 Conflict
|
|
94
|
+
*/
|
|
95
|
+
export const isAlreadyRegisteredError = (error: unknown): boolean => {
|
|
96
|
+
return getErrorStatus(error) === HttpStatus.CONFLICT;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Check if an error is an authentication error (HTTP 401).
|
|
101
|
+
*
|
|
102
|
+
* @param error - Any error object
|
|
103
|
+
* @returns true if the error is a 401 Unauthorized
|
|
104
|
+
*/
|
|
105
|
+
export const isUnauthorizedError = (error: unknown): boolean => {
|
|
106
|
+
return getErrorStatus(error) === HttpStatus.UNAUTHORIZED;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Check if an error is a forbidden error (HTTP 403).
|
|
111
|
+
*
|
|
112
|
+
* @param error - Any error object
|
|
113
|
+
* @returns true if the error is a 403 Forbidden
|
|
114
|
+
*/
|
|
115
|
+
export const isForbiddenError = (error: unknown): boolean => {
|
|
116
|
+
return getErrorStatus(error) === HttpStatus.FORBIDDEN;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Check if an error is a not found error (HTTP 404).
|
|
121
|
+
*
|
|
122
|
+
* @param error - Any error object
|
|
123
|
+
* @returns true if the error is a 404 Not Found
|
|
124
|
+
*/
|
|
125
|
+
export const isNotFoundError = (error: unknown): boolean => {
|
|
126
|
+
return getErrorStatus(error) === HttpStatus.NOT_FOUND;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Check if an error is a rate limit error (HTTP 429).
|
|
131
|
+
*
|
|
132
|
+
* @param error - Any error object
|
|
133
|
+
* @returns true if the error is a 429 Too Many Requests
|
|
134
|
+
*/
|
|
135
|
+
export const isRateLimitError = (error: unknown): boolean => {
|
|
136
|
+
return getErrorStatus(error) === HttpStatus.TOO_MANY_REQUESTS;
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Check if an error is a server error (HTTP 5xx).
|
|
141
|
+
*
|
|
142
|
+
* @param error - Any error object
|
|
143
|
+
* @returns true if the error is a 5xx server error
|
|
144
|
+
*/
|
|
145
|
+
export const isServerError = (error: unknown): boolean => {
|
|
146
|
+
const status = getErrorStatus(error);
|
|
147
|
+
return status !== undefined && status >= 500 && status < 600;
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Check if an error is a network error (no response received).
|
|
152
|
+
*
|
|
153
|
+
* @param error - Any error object
|
|
154
|
+
* @returns true if the error appears to be a network error
|
|
155
|
+
*/
|
|
156
|
+
export const isNetworkError = (error: unknown): boolean => {
|
|
157
|
+
if (!error || typeof error !== 'object') return false;
|
|
158
|
+
|
|
159
|
+
const err = error as Record<string, unknown>;
|
|
160
|
+
|
|
161
|
+
// Check for common network error indicators
|
|
162
|
+
if (err.name === 'NetworkError') return true;
|
|
163
|
+
if (err.code === 'ENOTFOUND' || err.code === 'ECONNREFUSED' || err.code === 'ETIMEDOUT') return true;
|
|
164
|
+
|
|
165
|
+
// Axios-style: has request but no response
|
|
166
|
+
if (err.request && !err.response) return true;
|
|
167
|
+
|
|
168
|
+
// Message-based detection
|
|
169
|
+
const message = getErrorMessage(error, '').toLowerCase();
|
|
170
|
+
return message.includes('network') || message.includes('connection') || message.includes('timeout');
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Check if an error is retryable (network errors or 5xx server errors).
|
|
175
|
+
*
|
|
176
|
+
* @param error - Any error object
|
|
177
|
+
* @returns true if the request should be retried
|
|
178
|
+
*/
|
|
179
|
+
export const isRetryableError = (error: unknown): boolean => {
|
|
180
|
+
return isNetworkError(error) || isServerError(error) || isRateLimitError(error);
|
|
181
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Re-exports all shared utilities for convenient importing.
|
|
5
|
+
*
|
|
6
|
+
* @module shared/utils
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
// Color utilities
|
|
10
|
+
export {
|
|
11
|
+
darkenColor,
|
|
12
|
+
lightenColor,
|
|
13
|
+
hexToRgb,
|
|
14
|
+
rgbToHex,
|
|
15
|
+
withOpacity,
|
|
16
|
+
isLightColor,
|
|
17
|
+
getContrastTextColor,
|
|
18
|
+
} from './colorUtils';
|
|
19
|
+
|
|
20
|
+
// Theme utilities
|
|
21
|
+
export {
|
|
22
|
+
normalizeTheme,
|
|
23
|
+
normalizeColorScheme,
|
|
24
|
+
getOppositeTheme,
|
|
25
|
+
systemPrefersDarkMode,
|
|
26
|
+
getSystemColorScheme,
|
|
27
|
+
} from './themeUtils';
|
|
28
|
+
export type { ThemeValue } from './themeUtils';
|
|
29
|
+
|
|
30
|
+
// Error utilities
|
|
31
|
+
export {
|
|
32
|
+
HttpStatus,
|
|
33
|
+
getErrorStatus,
|
|
34
|
+
getErrorMessage,
|
|
35
|
+
isAlreadyRegisteredError,
|
|
36
|
+
isUnauthorizedError,
|
|
37
|
+
isForbiddenError,
|
|
38
|
+
isNotFoundError,
|
|
39
|
+
isRateLimitError,
|
|
40
|
+
isServerError,
|
|
41
|
+
isNetworkError,
|
|
42
|
+
isRetryableError,
|
|
43
|
+
} from './errorUtils';
|
|
44
|
+
|
|
45
|
+
// Network utilities
|
|
46
|
+
export {
|
|
47
|
+
DEFAULT_CIRCUIT_BREAKER_CONFIG,
|
|
48
|
+
createCircuitBreakerState,
|
|
49
|
+
calculateBackoffInterval,
|
|
50
|
+
recordFailure,
|
|
51
|
+
recordSuccess,
|
|
52
|
+
shouldAllowRequest,
|
|
53
|
+
delay,
|
|
54
|
+
withRetry,
|
|
55
|
+
} from './networkUtils';
|
|
56
|
+
export type {
|
|
57
|
+
CircuitBreakerState,
|
|
58
|
+
CircuitBreakerConfig,
|
|
59
|
+
} from './networkUtils';
|