@webority-technologies/mobile 0.0.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 +399 -0
- package/lib/commonjs/api/publicClient.js +73 -0
- package/lib/commonjs/api/userClient.js +290 -0
- package/lib/commonjs/auth/authStore.js +107 -0
- package/lib/commonjs/auth/index.js +44 -0
- package/lib/commonjs/auth/jwt.js +84 -0
- package/lib/commonjs/components/Accordion/Accordion.js +257 -0
- package/lib/commonjs/components/Accordion/index.js +26 -0
- package/lib/commonjs/components/Avatar/Avatar.js +283 -0
- package/lib/commonjs/components/Avatar/index.js +26 -0
- package/lib/commonjs/components/Badge/Badge.js +212 -0
- package/lib/commonjs/components/Badge/index.js +20 -0
- package/lib/commonjs/components/Banner/Banner.js +276 -0
- package/lib/commonjs/components/Banner/index.js +20 -0
- package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +288 -0
- package/lib/commonjs/components/BottomNavigation/index.js +20 -0
- package/lib/commonjs/components/BottomSheet/BottomSheet.js +367 -0
- package/lib/commonjs/components/BottomSheet/index.js +20 -0
- package/lib/commonjs/components/Button/Button.js +281 -0
- package/lib/commonjs/components/Button/index.js +20 -0
- package/lib/commonjs/components/Card/Card.js +194 -0
- package/lib/commonjs/components/Card/index.js +20 -0
- package/lib/commonjs/components/Carousel/Carousel.js +475 -0
- package/lib/commonjs/components/Carousel/index.js +20 -0
- package/lib/commonjs/components/Checkbox/Checkbox.js +165 -0
- package/lib/commonjs/components/Checkbox/index.js +20 -0
- package/lib/commonjs/components/Chip/Chip.js +272 -0
- package/lib/commonjs/components/Chip/index.js +20 -0
- package/lib/commonjs/components/DatePicker/DatePicker.js +813 -0
- package/lib/commonjs/components/DatePicker/index.js +20 -0
- package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +622 -0
- package/lib/commonjs/components/DateRangePicker/index.js +20 -0
- package/lib/commonjs/components/Dialog/Dialog.js +215 -0
- package/lib/commonjs/components/Dialog/index.js +20 -0
- package/lib/commonjs/components/Divider/Divider.js +118 -0
- package/lib/commonjs/components/Divider/index.js +20 -0
- package/lib/commonjs/components/Drawer/Drawer.js +344 -0
- package/lib/commonjs/components/Drawer/index.js +20 -0
- package/lib/commonjs/components/EmptyState/EmptyState.js +201 -0
- package/lib/commonjs/components/EmptyState/index.js +20 -0
- package/lib/commonjs/components/FAB/FAB.js +457 -0
- package/lib/commonjs/components/FAB/index.js +26 -0
- package/lib/commonjs/components/Field/Field.js +127 -0
- package/lib/commonjs/components/Field/index.js +20 -0
- package/lib/commonjs/components/ForceUpdateDialog/ForceUpdateDialog.js +81 -0
- package/lib/commonjs/components/ForceUpdateDialog/index.js +20 -0
- package/lib/commonjs/components/Header/Header.js +339 -0
- package/lib/commonjs/components/Header/index.js +20 -0
- package/lib/commonjs/components/Icon/Icon.js +120 -0
- package/lib/commonjs/components/Icon/index.js +20 -0
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +463 -0
- package/lib/commonjs/components/ImageGallery/index.js +20 -0
- package/lib/commonjs/components/Input/Input.js +390 -0
- package/lib/commonjs/components/Input/index.js +20 -0
- package/lib/commonjs/components/ListItem/ListItem.js +241 -0
- package/lib/commonjs/components/ListItem/index.js +20 -0
- package/lib/commonjs/components/LoadingSpinner/LoadingSpinner.js +183 -0
- package/lib/commonjs/components/LoadingSpinner/index.js +20 -0
- package/lib/commonjs/components/Modal/Modal.js +239 -0
- package/lib/commonjs/components/Modal/index.js +20 -0
- package/lib/commonjs/components/NumberInput/NumberInput.js +392 -0
- package/lib/commonjs/components/NumberInput/index.js +20 -0
- package/lib/commonjs/components/OTPInput/OTPInput.js +375 -0
- package/lib/commonjs/components/OTPInput/index.js +20 -0
- package/lib/commonjs/components/ProgressBar/ProgressBar.js +149 -0
- package/lib/commonjs/components/ProgressBar/index.js +20 -0
- package/lib/commonjs/components/Radio/Radio.js +160 -0
- package/lib/commonjs/components/Radio/RadioGroup.js +43 -0
- package/lib/commonjs/components/Radio/index.js +39 -0
- package/lib/commonjs/components/Rating/Rating.js +236 -0
- package/lib/commonjs/components/Rating/index.js +20 -0
- package/lib/commonjs/components/SearchBar/SearchBar.js +274 -0
- package/lib/commonjs/components/SearchBar/index.js +20 -0
- package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +184 -0
- package/lib/commonjs/components/SegmentedControl/index.js +20 -0
- package/lib/commonjs/components/Select/Select.js +540 -0
- package/lib/commonjs/components/Select/index.js +20 -0
- package/lib/commonjs/components/SkeletonLoader/SkeletonContent.js +191 -0
- package/lib/commonjs/components/SkeletonLoader/SkeletonLoader.js +311 -0
- package/lib/commonjs/components/SkeletonLoader/index.js +57 -0
- package/lib/commonjs/components/Slider/Slider.js +443 -0
- package/lib/commonjs/components/Slider/index.js +20 -0
- package/lib/commonjs/components/Stepper/Stepper.js +403 -0
- package/lib/commonjs/components/Stepper/index.js +20 -0
- package/lib/commonjs/components/Swipeable/Swipeable.js +349 -0
- package/lib/commonjs/components/Swipeable/index.js +20 -0
- package/lib/commonjs/components/Switch/Switch.js +173 -0
- package/lib/commonjs/components/Switch/index.js +20 -0
- package/lib/commonjs/components/Tabs/Tabs.js +204 -0
- package/lib/commonjs/components/Tabs/index.js +20 -0
- package/lib/commonjs/components/TimePicker/TimePicker.js +551 -0
- package/lib/commonjs/components/TimePicker/index.js +20 -0
- package/lib/commonjs/components/Toast/Toast.js +273 -0
- package/lib/commonjs/components/Toast/ToastProvider.js +195 -0
- package/lib/commonjs/components/Toast/index.js +39 -0
- package/lib/commonjs/components/Tooltip/Tooltip.js +363 -0
- package/lib/commonjs/components/Tooltip/index.js +20 -0
- package/lib/commonjs/components/index.js +392 -0
- package/lib/commonjs/config/index.js +63 -0
- package/lib/commonjs/formatters/currency.js +61 -0
- package/lib/commonjs/formatters/date.js +156 -0
- package/lib/commonjs/formatters/index.js +77 -0
- package/lib/commonjs/formatters/initials.js +28 -0
- package/lib/commonjs/formatters/number.js +76 -0
- package/lib/commonjs/formatters/phone.js +59 -0
- package/lib/commonjs/hooks/index.js +27 -0
- package/lib/commonjs/hooks/useDebounce.js +17 -0
- package/lib/commonjs/hooks/usePressAnimation.js +44 -0
- package/lib/commonjs/hooks/useToggle.js +22 -0
- package/lib/commonjs/index.js +628 -0
- package/lib/commonjs/initSDK.js +47 -0
- package/lib/commonjs/initUI.js +24 -0
- package/lib/commonjs/initUserAuth.js +40 -0
- package/lib/commonjs/logger/index.js +127 -0
- package/lib/commonjs/network/NetworkStatusBanner.js +89 -0
- package/lib/commonjs/network/index.js +32 -0
- package/lib/commonjs/network/networkStatus.js +88 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/permissions/index.js +180 -0
- package/lib/commonjs/storage/index.js +187 -0
- package/lib/commonjs/theme/ThemeContext.js +73 -0
- package/lib/commonjs/theme/index.js +93 -0
- package/lib/commonjs/theme/merge.js +30 -0
- package/lib/commonjs/theme/tokens.js +319 -0
- package/lib/commonjs/theme/types.js +6 -0
- package/lib/commonjs/types/vector-icons.d.js +2 -0
- package/lib/commonjs/utils/dimensions.js +31 -0
- package/lib/commonjs/utils/hapticUtils.js +57 -0
- package/lib/commonjs/utils/imageCompression.js +51 -0
- package/lib/commonjs/utils/index.js +83 -0
- package/lib/commonjs/utils/responsive.js +48 -0
- package/lib/commonjs/utils/shadows.js +12 -0
- package/lib/commonjs/utils/spacing.js +86 -0
- package/lib/commonjs/validators/index.js +165 -0
- package/lib/commonjs/versionCheck/index.js +338 -0
- package/lib/module/api/publicClient.js +69 -0
- package/lib/module/api/userClient.js +283 -0
- package/lib/module/auth/authStore.js +100 -0
- package/lib/module/auth/index.js +5 -0
- package/lib/module/auth/jwt.js +78 -0
- package/lib/module/components/Accordion/Accordion.js +251 -0
- package/lib/module/components/Accordion/index.js +4 -0
- package/lib/module/components/Avatar/Avatar.js +278 -0
- package/lib/module/components/Avatar/index.js +4 -0
- package/lib/module/components/Badge/Badge.js +208 -0
- package/lib/module/components/Badge/index.js +4 -0
- package/lib/module/components/Banner/Banner.js +272 -0
- package/lib/module/components/Banner/index.js +4 -0
- package/lib/module/components/BottomNavigation/BottomNavigation.js +284 -0
- package/lib/module/components/BottomNavigation/index.js +4 -0
- package/lib/module/components/BottomSheet/BottomSheet.js +363 -0
- package/lib/module/components/BottomSheet/index.js +4 -0
- package/lib/module/components/Button/Button.js +277 -0
- package/lib/module/components/Button/index.js +4 -0
- package/lib/module/components/Card/Card.js +190 -0
- package/lib/module/components/Card/index.js +4 -0
- package/lib/module/components/Carousel/Carousel.js +471 -0
- package/lib/module/components/Carousel/index.js +4 -0
- package/lib/module/components/Checkbox/Checkbox.js +161 -0
- package/lib/module/components/Checkbox/index.js +4 -0
- package/lib/module/components/Chip/Chip.js +268 -0
- package/lib/module/components/Chip/index.js +4 -0
- package/lib/module/components/DatePicker/DatePicker.js +808 -0
- package/lib/module/components/DatePicker/index.js +4 -0
- package/lib/module/components/DateRangePicker/DateRangePicker.js +618 -0
- package/lib/module/components/DateRangePicker/index.js +4 -0
- package/lib/module/components/Dialog/Dialog.js +210 -0
- package/lib/module/components/Dialog/index.js +4 -0
- package/lib/module/components/Divider/Divider.js +114 -0
- package/lib/module/components/Divider/index.js +4 -0
- package/lib/module/components/Drawer/Drawer.js +340 -0
- package/lib/module/components/Drawer/index.js +4 -0
- package/lib/module/components/EmptyState/EmptyState.js +197 -0
- package/lib/module/components/EmptyState/index.js +4 -0
- package/lib/module/components/FAB/FAB.js +452 -0
- package/lib/module/components/FAB/index.js +4 -0
- package/lib/module/components/Field/Field.js +123 -0
- package/lib/module/components/Field/index.js +4 -0
- package/lib/module/components/ForceUpdateDialog/ForceUpdateDialog.js +75 -0
- package/lib/module/components/ForceUpdateDialog/index.js +4 -0
- package/lib/module/components/Header/Header.js +335 -0
- package/lib/module/components/Header/index.js +4 -0
- package/lib/module/components/Icon/Icon.js +111 -0
- package/lib/module/components/Icon/index.js +4 -0
- package/lib/module/components/ImageGallery/ImageGallery.js +458 -0
- package/lib/module/components/ImageGallery/index.js +4 -0
- package/lib/module/components/Input/Input.js +384 -0
- package/lib/module/components/Input/index.js +4 -0
- package/lib/module/components/ListItem/ListItem.js +237 -0
- package/lib/module/components/ListItem/index.js +4 -0
- package/lib/module/components/LoadingSpinner/LoadingSpinner.js +179 -0
- package/lib/module/components/LoadingSpinner/index.js +4 -0
- package/lib/module/components/Modal/Modal.js +235 -0
- package/lib/module/components/Modal/index.js +4 -0
- package/lib/module/components/NumberInput/NumberInput.js +388 -0
- package/lib/module/components/NumberInput/index.js +4 -0
- package/lib/module/components/OTPInput/OTPInput.js +371 -0
- package/lib/module/components/OTPInput/index.js +4 -0
- package/lib/module/components/ProgressBar/ProgressBar.js +145 -0
- package/lib/module/components/ProgressBar/index.js +4 -0
- package/lib/module/components/Radio/Radio.js +155 -0
- package/lib/module/components/Radio/RadioGroup.js +38 -0
- package/lib/module/components/Radio/index.js +5 -0
- package/lib/module/components/Rating/Rating.js +232 -0
- package/lib/module/components/Rating/index.js +4 -0
- package/lib/module/components/SearchBar/SearchBar.js +270 -0
- package/lib/module/components/SearchBar/index.js +4 -0
- package/lib/module/components/SegmentedControl/SegmentedControl.js +180 -0
- package/lib/module/components/SegmentedControl/index.js +4 -0
- package/lib/module/components/Select/Select.js +536 -0
- package/lib/module/components/Select/index.js +4 -0
- package/lib/module/components/SkeletonLoader/SkeletonContent.js +186 -0
- package/lib/module/components/SkeletonLoader/SkeletonLoader.js +301 -0
- package/lib/module/components/SkeletonLoader/index.js +5 -0
- package/lib/module/components/Slider/Slider.js +439 -0
- package/lib/module/components/Slider/index.js +4 -0
- package/lib/module/components/Stepper/Stepper.js +399 -0
- package/lib/module/components/Stepper/index.js +4 -0
- package/lib/module/components/Swipeable/Swipeable.js +344 -0
- package/lib/module/components/Swipeable/index.js +4 -0
- package/lib/module/components/Switch/Switch.js +169 -0
- package/lib/module/components/Switch/index.js +4 -0
- package/lib/module/components/Tabs/Tabs.js +200 -0
- package/lib/module/components/Tabs/index.js +4 -0
- package/lib/module/components/TimePicker/TimePicker.js +545 -0
- package/lib/module/components/TimePicker/index.js +4 -0
- package/lib/module/components/Toast/Toast.js +268 -0
- package/lib/module/components/Toast/ToastProvider.js +187 -0
- package/lib/module/components/Toast/index.js +5 -0
- package/lib/module/components/Tooltip/Tooltip.js +358 -0
- package/lib/module/components/Tooltip/index.js +4 -0
- package/lib/module/components/index.js +47 -0
- package/lib/module/config/index.js +55 -0
- package/lib/module/formatters/currency.js +56 -0
- package/lib/module/formatters/date.js +148 -0
- package/lib/module/formatters/index.js +8 -0
- package/lib/module/formatters/initials.js +23 -0
- package/lib/module/formatters/number.js +69 -0
- package/lib/module/formatters/phone.js +53 -0
- package/lib/module/hooks/index.js +6 -0
- package/lib/module/hooks/useDebounce.js +12 -0
- package/lib/module/hooks/usePressAnimation.js +39 -0
- package/lib/module/hooks/useToggle.js +17 -0
- package/lib/module/index.js +37 -0
- package/lib/module/initSDK.js +42 -0
- package/lib/module/initUI.js +19 -0
- package/lib/module/initUserAuth.js +36 -0
- package/lib/module/logger/index.js +123 -0
- package/lib/module/network/NetworkStatusBanner.js +83 -0
- package/lib/module/network/index.js +5 -0
- package/lib/module/network/networkStatus.js +81 -0
- package/lib/module/package.json +1 -0
- package/lib/module/permissions/index.js +177 -0
- package/lib/module/storage/index.js +183 -0
- package/lib/module/theme/ThemeContext.js +65 -0
- package/lib/module/theme/index.js +48 -0
- package/lib/module/theme/merge.js +25 -0
- package/lib/module/theme/tokens.js +315 -0
- package/lib/module/theme/types.js +4 -0
- package/lib/module/types/vector-icons.d.js +2 -0
- package/lib/module/utils/dimensions.js +4 -0
- package/lib/module/utils/hapticUtils.js +51 -0
- package/lib/module/utils/imageCompression.js +46 -0
- package/lib/module/utils/index.js +8 -0
- package/lib/module/utils/responsive.js +42 -0
- package/lib/module/utils/shadows.js +7 -0
- package/lib/module/utils/spacing.js +82 -0
- package/lib/module/validators/index.js +143 -0
- package/lib/module/versionCheck/index.js +334 -0
- package/lib/typescript/commonjs/api/publicClient.d.ts +11 -0
- package/lib/typescript/commonjs/api/userClient.d.ts +18 -0
- package/lib/typescript/commonjs/auth/authStore.d.ts +20 -0
- package/lib/typescript/commonjs/auth/index.d.ts +5 -0
- package/lib/typescript/commonjs/auth/jwt.d.ts +31 -0
- package/lib/typescript/commonjs/components/Accordion/Accordion.d.ts +33 -0
- package/lib/typescript/commonjs/components/Accordion/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Avatar/Avatar.d.ts +42 -0
- package/lib/typescript/commonjs/components/Avatar/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Badge/Badge.d.ts +27 -0
- package/lib/typescript/commonjs/components/Badge/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Banner/Banner.d.ts +27 -0
- package/lib/typescript/commonjs/components/Banner/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +34 -0
- package/lib/typescript/commonjs/components/BottomNavigation/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +45 -0
- package/lib/typescript/commonjs/components/BottomSheet/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Button/Button.d.ts +29 -0
- package/lib/typescript/commonjs/components/Button/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Card/Card.d.ts +29 -0
- package/lib/typescript/commonjs/components/Card/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Carousel/Carousel.d.ts +66 -0
- package/lib/typescript/commonjs/components/Carousel/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +24 -0
- package/lib/typescript/commonjs/components/Checkbox/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Chip/Chip.d.ts +25 -0
- package/lib/typescript/commonjs/components/Chip/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/DatePicker/DatePicker.d.ts +25 -0
- package/lib/typescript/commonjs/components/DatePicker/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/DateRangePicker/DateRangePicker.d.ts +32 -0
- package/lib/typescript/commonjs/components/DateRangePicker/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +25 -0
- package/lib/typescript/commonjs/components/Dialog/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Divider/Divider.d.ts +21 -0
- package/lib/typescript/commonjs/components/Divider/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Drawer/Drawer.d.ts +53 -0
- package/lib/typescript/commonjs/components/Drawer/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/EmptyState/EmptyState.d.ts +25 -0
- package/lib/typescript/commonjs/components/EmptyState/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/FAB/FAB.d.ts +53 -0
- package/lib/typescript/commonjs/components/FAB/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Field/Field.d.ts +28 -0
- package/lib/typescript/commonjs/components/Field/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/ForceUpdateDialog/ForceUpdateDialog.d.ts +39 -0
- package/lib/typescript/commonjs/components/ForceUpdateDialog/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Header/Header.d.ts +36 -0
- package/lib/typescript/commonjs/components/Header/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Icon/Icon.d.ts +20 -0
- package/lib/typescript/commonjs/components/Icon/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/ImageGallery/ImageGallery.d.ts +41 -0
- package/lib/typescript/commonjs/components/ImageGallery/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Input/Input.d.ts +34 -0
- package/lib/typescript/commonjs/components/Input/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +30 -0
- package/lib/typescript/commonjs/components/ListItem/index.d.ts +4 -0
- package/lib/typescript/commonjs/components/LoadingSpinner/LoadingSpinner.d.ts +20 -0
- package/lib/typescript/commonjs/components/LoadingSpinner/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Modal/Modal.d.ts +29 -0
- package/lib/typescript/commonjs/components/Modal/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/NumberInput/NumberInput.d.ts +35 -0
- package/lib/typescript/commonjs/components/NumberInput/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/OTPInput/OTPInput.d.ts +29 -0
- package/lib/typescript/commonjs/components/OTPInput/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/ProgressBar/ProgressBar.d.ts +21 -0
- package/lib/typescript/commonjs/components/ProgressBar/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Radio/Radio.d.ts +32 -0
- package/lib/typescript/commonjs/components/Radio/RadioGroup.d.ts +16 -0
- package/lib/typescript/commonjs/components/Radio/index.d.ts +5 -0
- package/lib/typescript/commonjs/components/Rating/Rating.d.ts +22 -0
- package/lib/typescript/commonjs/components/Rating/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +28 -0
- package/lib/typescript/commonjs/components/SearchBar/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +36 -0
- package/lib/typescript/commonjs/components/SegmentedControl/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Select/Select.d.ts +48 -0
- package/lib/typescript/commonjs/components/Select/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/SkeletonLoader/SkeletonContent.d.ts +29 -0
- package/lib/typescript/commonjs/components/SkeletonLoader/SkeletonLoader.d.ts +42 -0
- package/lib/typescript/commonjs/components/SkeletonLoader/index.d.ts +5 -0
- package/lib/typescript/commonjs/components/Slider/Slider.d.ts +33 -0
- package/lib/typescript/commonjs/components/Slider/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Stepper/Stepper.d.ts +25 -0
- package/lib/typescript/commonjs/components/Stepper/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +45 -0
- package/lib/typescript/commonjs/components/Swipeable/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Switch/Switch.d.ts +24 -0
- package/lib/typescript/commonjs/components/Switch/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +37 -0
- package/lib/typescript/commonjs/components/Tabs/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/TimePicker/TimePicker.d.ts +26 -0
- package/lib/typescript/commonjs/components/TimePicker/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Toast/Toast.d.ts +30 -0
- package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +26 -0
- package/lib/typescript/commonjs/components/Toast/index.d.ts +5 -0
- package/lib/typescript/commonjs/components/Tooltip/Tooltip.d.ts +22 -0
- package/lib/typescript/commonjs/components/Tooltip/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/index.d.ts +89 -0
- package/lib/typescript/commonjs/config/index.d.ts +40 -0
- package/lib/typescript/commonjs/formatters/currency.d.ts +24 -0
- package/lib/typescript/commonjs/formatters/date.d.ts +22 -0
- package/lib/typescript/commonjs/formatters/index.d.ts +8 -0
- package/lib/typescript/commonjs/formatters/initials.d.ts +11 -0
- package/lib/typescript/commonjs/formatters/number.d.ts +15 -0
- package/lib/typescript/commonjs/formatters/phone.d.ts +13 -0
- package/lib/typescript/commonjs/hooks/index.d.ts +6 -0
- package/lib/typescript/commonjs/hooks/useDebounce.d.ts +2 -0
- package/lib/typescript/commonjs/hooks/usePressAnimation.d.ts +14 -0
- package/lib/typescript/commonjs/hooks/useToggle.d.ts +9 -0
- package/lib/typescript/commonjs/index.d.ts +37 -0
- package/lib/typescript/commonjs/initSDK.d.ts +40 -0
- package/lib/typescript/commonjs/initUI.d.ts +12 -0
- package/lib/typescript/commonjs/initUserAuth.d.ts +22 -0
- package/lib/typescript/commonjs/logger/index.d.ts +42 -0
- package/lib/typescript/commonjs/network/NetworkStatusBanner.d.ts +19 -0
- package/lib/typescript/commonjs/network/index.d.ts +5 -0
- package/lib/typescript/commonjs/network/networkStatus.d.ts +27 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/permissions/index.d.ts +20 -0
- package/lib/typescript/commonjs/storage/index.d.ts +42 -0
- package/lib/typescript/commonjs/theme/ThemeContext.d.ts +18 -0
- package/lib/typescript/commonjs/theme/index.d.ts +13 -0
- package/lib/typescript/commonjs/theme/merge.d.ts +3 -0
- package/lib/typescript/commonjs/theme/tokens.d.ts +4 -0
- package/lib/typescript/commonjs/theme/types.d.ts +161 -0
- package/lib/typescript/commonjs/utils/dimensions.d.ts +3 -0
- package/lib/typescript/commonjs/utils/hapticUtils.d.ts +4 -0
- package/lib/typescript/commonjs/utils/imageCompression.d.ts +15 -0
- package/lib/typescript/commonjs/utils/index.d.ts +10 -0
- package/lib/typescript/commonjs/utils/responsive.d.ts +23 -0
- package/lib/typescript/commonjs/utils/shadows.d.ts +4 -0
- package/lib/typescript/commonjs/utils/spacing.d.ts +61 -0
- package/lib/typescript/commonjs/validators/index.d.ts +46 -0
- package/lib/typescript/commonjs/versionCheck/index.d.ts +59 -0
- package/lib/typescript/module/api/publicClient.d.ts +11 -0
- package/lib/typescript/module/api/userClient.d.ts +18 -0
- package/lib/typescript/module/auth/authStore.d.ts +20 -0
- package/lib/typescript/module/auth/index.d.ts +5 -0
- package/lib/typescript/module/auth/jwt.d.ts +31 -0
- package/lib/typescript/module/components/Accordion/Accordion.d.ts +33 -0
- package/lib/typescript/module/components/Accordion/index.d.ts +3 -0
- package/lib/typescript/module/components/Avatar/Avatar.d.ts +42 -0
- package/lib/typescript/module/components/Avatar/index.d.ts +3 -0
- package/lib/typescript/module/components/Badge/Badge.d.ts +27 -0
- package/lib/typescript/module/components/Badge/index.d.ts +3 -0
- package/lib/typescript/module/components/Banner/Banner.d.ts +27 -0
- package/lib/typescript/module/components/Banner/index.d.ts +3 -0
- package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +34 -0
- package/lib/typescript/module/components/BottomNavigation/index.d.ts +3 -0
- package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +45 -0
- package/lib/typescript/module/components/BottomSheet/index.d.ts +3 -0
- package/lib/typescript/module/components/Button/Button.d.ts +29 -0
- package/lib/typescript/module/components/Button/index.d.ts +3 -0
- package/lib/typescript/module/components/Card/Card.d.ts +29 -0
- package/lib/typescript/module/components/Card/index.d.ts +3 -0
- package/lib/typescript/module/components/Carousel/Carousel.d.ts +66 -0
- package/lib/typescript/module/components/Carousel/index.d.ts +3 -0
- package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +24 -0
- package/lib/typescript/module/components/Checkbox/index.d.ts +3 -0
- package/lib/typescript/module/components/Chip/Chip.d.ts +25 -0
- package/lib/typescript/module/components/Chip/index.d.ts +3 -0
- package/lib/typescript/module/components/DatePicker/DatePicker.d.ts +25 -0
- package/lib/typescript/module/components/DatePicker/index.d.ts +3 -0
- package/lib/typescript/module/components/DateRangePicker/DateRangePicker.d.ts +32 -0
- package/lib/typescript/module/components/DateRangePicker/index.d.ts +3 -0
- package/lib/typescript/module/components/Dialog/Dialog.d.ts +25 -0
- package/lib/typescript/module/components/Dialog/index.d.ts +3 -0
- package/lib/typescript/module/components/Divider/Divider.d.ts +21 -0
- package/lib/typescript/module/components/Divider/index.d.ts +3 -0
- package/lib/typescript/module/components/Drawer/Drawer.d.ts +53 -0
- package/lib/typescript/module/components/Drawer/index.d.ts +3 -0
- package/lib/typescript/module/components/EmptyState/EmptyState.d.ts +25 -0
- package/lib/typescript/module/components/EmptyState/index.d.ts +3 -0
- package/lib/typescript/module/components/FAB/FAB.d.ts +53 -0
- package/lib/typescript/module/components/FAB/index.d.ts +3 -0
- package/lib/typescript/module/components/Field/Field.d.ts +28 -0
- package/lib/typescript/module/components/Field/index.d.ts +3 -0
- package/lib/typescript/module/components/ForceUpdateDialog/ForceUpdateDialog.d.ts +39 -0
- package/lib/typescript/module/components/ForceUpdateDialog/index.d.ts +3 -0
- package/lib/typescript/module/components/Header/Header.d.ts +36 -0
- package/lib/typescript/module/components/Header/index.d.ts +3 -0
- package/lib/typescript/module/components/Icon/Icon.d.ts +20 -0
- package/lib/typescript/module/components/Icon/index.d.ts +3 -0
- package/lib/typescript/module/components/ImageGallery/ImageGallery.d.ts +41 -0
- package/lib/typescript/module/components/ImageGallery/index.d.ts +3 -0
- package/lib/typescript/module/components/Input/Input.d.ts +34 -0
- package/lib/typescript/module/components/Input/index.d.ts +3 -0
- package/lib/typescript/module/components/ListItem/ListItem.d.ts +30 -0
- package/lib/typescript/module/components/ListItem/index.d.ts +4 -0
- package/lib/typescript/module/components/LoadingSpinner/LoadingSpinner.d.ts +20 -0
- package/lib/typescript/module/components/LoadingSpinner/index.d.ts +3 -0
- package/lib/typescript/module/components/Modal/Modal.d.ts +29 -0
- package/lib/typescript/module/components/Modal/index.d.ts +3 -0
- package/lib/typescript/module/components/NumberInput/NumberInput.d.ts +35 -0
- package/lib/typescript/module/components/NumberInput/index.d.ts +3 -0
- package/lib/typescript/module/components/OTPInput/OTPInput.d.ts +29 -0
- package/lib/typescript/module/components/OTPInput/index.d.ts +3 -0
- package/lib/typescript/module/components/ProgressBar/ProgressBar.d.ts +21 -0
- package/lib/typescript/module/components/ProgressBar/index.d.ts +3 -0
- package/lib/typescript/module/components/Radio/Radio.d.ts +32 -0
- package/lib/typescript/module/components/Radio/RadioGroup.d.ts +16 -0
- package/lib/typescript/module/components/Radio/index.d.ts +5 -0
- package/lib/typescript/module/components/Rating/Rating.d.ts +22 -0
- package/lib/typescript/module/components/Rating/index.d.ts +3 -0
- package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +28 -0
- package/lib/typescript/module/components/SearchBar/index.d.ts +3 -0
- package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +36 -0
- package/lib/typescript/module/components/SegmentedControl/index.d.ts +3 -0
- package/lib/typescript/module/components/Select/Select.d.ts +48 -0
- package/lib/typescript/module/components/Select/index.d.ts +3 -0
- package/lib/typescript/module/components/SkeletonLoader/SkeletonContent.d.ts +29 -0
- package/lib/typescript/module/components/SkeletonLoader/SkeletonLoader.d.ts +42 -0
- package/lib/typescript/module/components/SkeletonLoader/index.d.ts +5 -0
- package/lib/typescript/module/components/Slider/Slider.d.ts +33 -0
- package/lib/typescript/module/components/Slider/index.d.ts +3 -0
- package/lib/typescript/module/components/Stepper/Stepper.d.ts +25 -0
- package/lib/typescript/module/components/Stepper/index.d.ts +3 -0
- package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +45 -0
- package/lib/typescript/module/components/Swipeable/index.d.ts +3 -0
- package/lib/typescript/module/components/Switch/Switch.d.ts +24 -0
- package/lib/typescript/module/components/Switch/index.d.ts +3 -0
- package/lib/typescript/module/components/Tabs/Tabs.d.ts +37 -0
- package/lib/typescript/module/components/Tabs/index.d.ts +3 -0
- package/lib/typescript/module/components/TimePicker/TimePicker.d.ts +26 -0
- package/lib/typescript/module/components/TimePicker/index.d.ts +3 -0
- package/lib/typescript/module/components/Toast/Toast.d.ts +30 -0
- package/lib/typescript/module/components/Toast/ToastProvider.d.ts +26 -0
- package/lib/typescript/module/components/Toast/index.d.ts +5 -0
- package/lib/typescript/module/components/Tooltip/Tooltip.d.ts +22 -0
- package/lib/typescript/module/components/Tooltip/index.d.ts +3 -0
- package/lib/typescript/module/components/index.d.ts +89 -0
- package/lib/typescript/module/config/index.d.ts +40 -0
- package/lib/typescript/module/formatters/currency.d.ts +24 -0
- package/lib/typescript/module/formatters/date.d.ts +22 -0
- package/lib/typescript/module/formatters/index.d.ts +8 -0
- package/lib/typescript/module/formatters/initials.d.ts +11 -0
- package/lib/typescript/module/formatters/number.d.ts +15 -0
- package/lib/typescript/module/formatters/phone.d.ts +13 -0
- package/lib/typescript/module/hooks/index.d.ts +6 -0
- package/lib/typescript/module/hooks/useDebounce.d.ts +2 -0
- package/lib/typescript/module/hooks/usePressAnimation.d.ts +14 -0
- package/lib/typescript/module/hooks/useToggle.d.ts +9 -0
- package/lib/typescript/module/index.d.ts +37 -0
- package/lib/typescript/module/initSDK.d.ts +40 -0
- package/lib/typescript/module/initUI.d.ts +12 -0
- package/lib/typescript/module/initUserAuth.d.ts +22 -0
- package/lib/typescript/module/logger/index.d.ts +42 -0
- package/lib/typescript/module/network/NetworkStatusBanner.d.ts +19 -0
- package/lib/typescript/module/network/index.d.ts +5 -0
- package/lib/typescript/module/network/networkStatus.d.ts +27 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/permissions/index.d.ts +20 -0
- package/lib/typescript/module/storage/index.d.ts +42 -0
- package/lib/typescript/module/theme/ThemeContext.d.ts +18 -0
- package/lib/typescript/module/theme/index.d.ts +13 -0
- package/lib/typescript/module/theme/merge.d.ts +3 -0
- package/lib/typescript/module/theme/tokens.d.ts +4 -0
- package/lib/typescript/module/theme/types.d.ts +161 -0
- package/lib/typescript/module/utils/dimensions.d.ts +3 -0
- package/lib/typescript/module/utils/hapticUtils.d.ts +4 -0
- package/lib/typescript/module/utils/imageCompression.d.ts +15 -0
- package/lib/typescript/module/utils/index.d.ts +10 -0
- package/lib/typescript/module/utils/responsive.d.ts +23 -0
- package/lib/typescript/module/utils/shadows.d.ts +4 -0
- package/lib/typescript/module/utils/spacing.d.ts +61 -0
- package/lib/typescript/module/validators/index.d.ts +46 -0
- package/lib/typescript/module/versionCheck/index.d.ts +59 -0
- package/package.json +137 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.injectStore = exports.injectAuthActions = exports.default = void 0;
|
|
7
|
+
var _axios = _interopRequireWildcard(require("axios"));
|
|
8
|
+
var _axiosRetry = _interopRequireWildcard(require("axios-retry"));
|
|
9
|
+
var _index = require("../logger/index.js");
|
|
10
|
+
var _authStore = require("../auth/authStore.js");
|
|
11
|
+
var _index2 = require("../config/index.js");
|
|
12
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
13
|
+
// Define timeout for requests
|
|
14
|
+
const REQUEST_TIMEOUT = 30000; // 30 seconds
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Minimal Redux-store shape required by the user client to dispatch
|
|
18
|
+
* refresh-token / logout actions.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Internal extension of axios request config to track retry attempts.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
const userClient = _axios.default.create({
|
|
26
|
+
baseURL: (0, _index2.getConfigValue)('baseUrl') ?? undefined,
|
|
27
|
+
headers: {
|
|
28
|
+
'Content-Type': 'application/json',
|
|
29
|
+
'Accept-Encoding': 'gzip, deflate, br'
|
|
30
|
+
},
|
|
31
|
+
timeout: REQUEST_TIMEOUT // Set timeout for all requests
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// Configure axios-retry with modified exponential backoff
|
|
35
|
+
(0, _axiosRetry.default)(userClient, {
|
|
36
|
+
retries: 3,
|
|
37
|
+
retryDelay: retryCount => retryCount === 0 ? 0 : Math.pow(2, retryCount) * 1000,
|
|
38
|
+
// Immediate retry for the first attempt
|
|
39
|
+
retryCondition: error => {
|
|
40
|
+
// Retry on network errors or specific status codes
|
|
41
|
+
const status = error.response?.status;
|
|
42
|
+
return (0, _axiosRetry.isNetworkOrIdempotentRequestError)(error) ||
|
|
43
|
+
// Use the named export
|
|
44
|
+
typeof status === 'number' && [429, 503].includes(status);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
let store;
|
|
48
|
+
let authActions = {
|
|
49
|
+
logout: () => undefined,
|
|
50
|
+
refreshToken: () => undefined
|
|
51
|
+
};
|
|
52
|
+
const injectStore = _store => {
|
|
53
|
+
store = _store;
|
|
54
|
+
};
|
|
55
|
+
exports.injectStore = injectStore;
|
|
56
|
+
const injectAuthActions = actions => {
|
|
57
|
+
authActions = {
|
|
58
|
+
...authActions,
|
|
59
|
+
...actions
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// Single promise to track token refresh
|
|
64
|
+
exports.injectAuthActions = injectAuthActions;
|
|
65
|
+
let refreshTokenPromise = null;
|
|
66
|
+
|
|
67
|
+
// Queue for failed requests
|
|
68
|
+
let failedQueue = [];
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Processes the queue of failed requests.
|
|
72
|
+
*/
|
|
73
|
+
const processQueue = (error, token = null) => {
|
|
74
|
+
failedQueue.forEach(({
|
|
75
|
+
resolve,
|
|
76
|
+
reject
|
|
77
|
+
}) => {
|
|
78
|
+
if (error) {
|
|
79
|
+
reject(error);
|
|
80
|
+
} else if (token !== null) {
|
|
81
|
+
resolve(token);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
failedQueue = [];
|
|
85
|
+
};
|
|
86
|
+
const getErrorMessage = error => {
|
|
87
|
+
if (error instanceof Error) {
|
|
88
|
+
return error.message;
|
|
89
|
+
}
|
|
90
|
+
if (typeof error === 'string') {
|
|
91
|
+
return error;
|
|
92
|
+
}
|
|
93
|
+
return 'Unknown error';
|
|
94
|
+
};
|
|
95
|
+
const setAuthHeader = (config, token) => {
|
|
96
|
+
if (config.headers instanceof _axios.AxiosHeaders) {
|
|
97
|
+
config.headers.set('Authorization', `Bearer ${token}`);
|
|
98
|
+
} else {
|
|
99
|
+
// Fallback in case headers were provided as a plain object.
|
|
100
|
+
config.headers = _axios.AxiosHeaders.from({
|
|
101
|
+
...config.headers,
|
|
102
|
+
Authorization: `Bearer ${token}`
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
const requireStore = () => {
|
|
107
|
+
if (!store) {
|
|
108
|
+
throw new Error('User package store is not initialized. Call initUserAuth first.');
|
|
109
|
+
}
|
|
110
|
+
return store;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Attach Authorization Token Before Requests
|
|
115
|
+
*/
|
|
116
|
+
userClient.interceptors.request.use(async config => {
|
|
117
|
+
try {
|
|
118
|
+
// Skip token check for refresh token endpoint to prevent infinite loop
|
|
119
|
+
if (config.url?.includes('/Account/RefreshToken')) {
|
|
120
|
+
return config;
|
|
121
|
+
}
|
|
122
|
+
const token = await (0, _authStore.getToken)('accessToken');
|
|
123
|
+
|
|
124
|
+
// Check if token exists
|
|
125
|
+
if (!token?.token) {
|
|
126
|
+
throw new Error('No access token available');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Check if token is expired
|
|
130
|
+
const currentTime = Date.now();
|
|
131
|
+
const tokenExpiry = Date.parse(token.expiry);
|
|
132
|
+
const bufferTime = 30 * 1000; // 30 seconds buffer
|
|
133
|
+
|
|
134
|
+
// If token is expired or about to expire, try to refresh it first
|
|
135
|
+
if (tokenExpiry <= currentTime + bufferTime) {
|
|
136
|
+
_index.Logger.info('Access token expired or about to expire, refreshing before request');
|
|
137
|
+
|
|
138
|
+
// If we already have a refresh in progress, wait for it
|
|
139
|
+
if (refreshTokenPromise) {
|
|
140
|
+
_index.Logger.info('Token refresh already in progress, waiting for completion');
|
|
141
|
+
try {
|
|
142
|
+
const newToken = await refreshTokenPromise;
|
|
143
|
+
setAuthHeader(config, newToken);
|
|
144
|
+
return config;
|
|
145
|
+
} catch (err) {
|
|
146
|
+
_index.Logger.error('Failed to use refreshed token:', getErrorMessage(err));
|
|
147
|
+
throw err;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Start a new token refresh process
|
|
152
|
+
refreshTokenPromise = (async () => {
|
|
153
|
+
try {
|
|
154
|
+
const refreshToken = await (0, _authStore.getToken)('refreshToken');
|
|
155
|
+
if (!refreshToken?.token) {
|
|
156
|
+
_index.Logger.error('No refresh token available');
|
|
157
|
+
throw new Error('No refresh token available');
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Check if refresh token is expired
|
|
161
|
+
const refreshTokenExpiry = Date.parse(refreshToken.expiry);
|
|
162
|
+
if (refreshTokenExpiry <= currentTime) {
|
|
163
|
+
_index.Logger.error('Refresh token expired');
|
|
164
|
+
throw new Error('Refresh token expired');
|
|
165
|
+
}
|
|
166
|
+
_index.Logger.info('Dispatching refresh token action');
|
|
167
|
+
const activeStore = requireStore();
|
|
168
|
+
const refreshResult = await activeStore.dispatch(authActions.refreshToken());
|
|
169
|
+
if (refreshResult.error) {
|
|
170
|
+
throw new Error(`Token refresh failed: ${refreshResult.error.message || 'Unknown error'}`);
|
|
171
|
+
}
|
|
172
|
+
const newAccessToken = await (0, _authStore.getToken)('accessToken');
|
|
173
|
+
if (!newAccessToken?.token) {
|
|
174
|
+
throw new Error('Failed to retrieve new access token after refresh');
|
|
175
|
+
}
|
|
176
|
+
_index.Logger.info('Token refreshed successfully before request');
|
|
177
|
+
return newAccessToken.token;
|
|
178
|
+
} catch (error) {
|
|
179
|
+
_index.Logger.error('Token refresh failed before request:', getErrorMessage(error));
|
|
180
|
+
await requireStore().dispatch(authActions.logout());
|
|
181
|
+
throw error;
|
|
182
|
+
} finally {
|
|
183
|
+
refreshTokenPromise = null;
|
|
184
|
+
}
|
|
185
|
+
})();
|
|
186
|
+
try {
|
|
187
|
+
// Wait for the refresh to complete
|
|
188
|
+
const newToken = await refreshTokenPromise;
|
|
189
|
+
setAuthHeader(config, newToken);
|
|
190
|
+
return config;
|
|
191
|
+
} catch (err) {
|
|
192
|
+
return Promise.reject(err);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// Token is valid, proceed with request
|
|
197
|
+
setAuthHeader(config, token.token);
|
|
198
|
+
return config;
|
|
199
|
+
} catch (error) {
|
|
200
|
+
_index.Logger.error('Failed to attach token:', getErrorMessage(error));
|
|
201
|
+
return Promise.reject(error);
|
|
202
|
+
}
|
|
203
|
+
}, error => {
|
|
204
|
+
_index.Logger.error('Request error:', getErrorMessage(error));
|
|
205
|
+
return Promise.reject(error);
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Handle Response & Token Refresh
|
|
210
|
+
*/
|
|
211
|
+
userClient.interceptors.response.use(response => response, async error => {
|
|
212
|
+
if (!_axios.default.isAxiosError(error)) {
|
|
213
|
+
_index.Logger.error(`Non-axios error in response interceptor: ${getErrorMessage(error)}`);
|
|
214
|
+
return Promise.reject(error);
|
|
215
|
+
}
|
|
216
|
+
const axiosError = error;
|
|
217
|
+
const originalRequest = axiosError.config;
|
|
218
|
+
if (!axiosError.response) {
|
|
219
|
+
_index.Logger.error(`Network error or no response from server: ${axiosError.message}, URL: ${originalRequest?.url}`);
|
|
220
|
+
return Promise.reject(error);
|
|
221
|
+
}
|
|
222
|
+
if (axiosError.response.status === 401 && originalRequest && !originalRequest._retry) {
|
|
223
|
+
_index.Logger.warn(`Unauthorized URL: ${originalRequest.url}`);
|
|
224
|
+
originalRequest._retry = true;
|
|
225
|
+
|
|
226
|
+
// If we already have a refresh in progress, queue this request
|
|
227
|
+
if (refreshTokenPromise) {
|
|
228
|
+
return new Promise((resolve, reject) => {
|
|
229
|
+
failedQueue.push({
|
|
230
|
+
resolve,
|
|
231
|
+
reject
|
|
232
|
+
});
|
|
233
|
+
}).then(token => {
|
|
234
|
+
_index.Logger.info('Retrying request after token refresh:', originalRequest.url);
|
|
235
|
+
setAuthHeader(originalRequest, token);
|
|
236
|
+
return userClient(originalRequest);
|
|
237
|
+
}).catch(err => {
|
|
238
|
+
_index.Logger.error('Failed to retry request after token refresh:', getErrorMessage(err));
|
|
239
|
+
return Promise.reject(err);
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Start a new token refresh process and track it
|
|
244
|
+
refreshTokenPromise = (async () => {
|
|
245
|
+
try {
|
|
246
|
+
_index.Logger.info('User Client: Refreshing token...');
|
|
247
|
+
const refreshToken = await (0, _authStore.getToken)('refreshToken');
|
|
248
|
+
if (!refreshToken || !refreshToken.token) {
|
|
249
|
+
_index.Logger.error('No refresh token available or token is invalid');
|
|
250
|
+
throw new Error('No refresh token available');
|
|
251
|
+
}
|
|
252
|
+
_index.Logger.info('Dispatching refresh token action');
|
|
253
|
+
const activeStore = requireStore();
|
|
254
|
+
const refreshResult = await activeStore.dispatch(authActions.refreshToken());
|
|
255
|
+
if (refreshResult.error) {
|
|
256
|
+
_index.Logger.error('Token refresh action failed:', refreshResult.error);
|
|
257
|
+
throw new Error(`Token refresh failed: ${refreshResult.error.message || 'Unknown error'}`);
|
|
258
|
+
}
|
|
259
|
+
_index.Logger.info('Getting new access token after refresh');
|
|
260
|
+
const newAccessToken = await (0, _authStore.getToken)('accessToken');
|
|
261
|
+
if (!newAccessToken?.token) {
|
|
262
|
+
throw new Error('Failed to retrieve new access token');
|
|
263
|
+
}
|
|
264
|
+
_index.Logger.info('Token refreshed successfully');
|
|
265
|
+
processQueue(null, newAccessToken.token);
|
|
266
|
+
return newAccessToken.token;
|
|
267
|
+
} catch (refreshError) {
|
|
268
|
+
const responseData = _axios.default.isAxiosError(refreshError) ? refreshError.response?.data : undefined;
|
|
269
|
+
_index.Logger.error('Token refresh failed:', responseData ?? getErrorMessage(refreshError));
|
|
270
|
+
processQueue(refreshError, null);
|
|
271
|
+
await requireStore().dispatch(authActions.logout());
|
|
272
|
+
throw refreshError;
|
|
273
|
+
} finally {
|
|
274
|
+
refreshTokenPromise = null;
|
|
275
|
+
}
|
|
276
|
+
})();
|
|
277
|
+
try {
|
|
278
|
+
// Wait for the refresh token process to complete
|
|
279
|
+
const newToken = await refreshTokenPromise;
|
|
280
|
+
setAuthHeader(originalRequest, newToken);
|
|
281
|
+
return userClient(originalRequest);
|
|
282
|
+
} catch (err) {
|
|
283
|
+
return Promise.reject(err);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
_index.Logger.error(`Response error: ${axiosError.response?.data ?? axiosError.message}, URL: ${originalRequest?.url}, Status: ${axiosError.response.status}`);
|
|
287
|
+
return Promise.reject(error);
|
|
288
|
+
});
|
|
289
|
+
var _default = exports.default = userClient;
|
|
290
|
+
//# sourceMappingURL=userClient.js.map
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.storeToken = exports.removeToken = exports.getToken = void 0;
|
|
7
|
+
var Keychain = _interopRequireWildcard(require("react-native-keychain"));
|
|
8
|
+
var _index = require("../logger/index.js");
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
/**
|
|
11
|
+
* Token data persisted in the keychain.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Store token with expiry.
|
|
16
|
+
*/
|
|
17
|
+
const storeToken = async (key, token, expiry) => {
|
|
18
|
+
_index.Logger.info(`Storing token for key: ${key}, token: ${token}, expiry: ${expiry}`);
|
|
19
|
+
try {
|
|
20
|
+
const data = JSON.stringify({
|
|
21
|
+
token,
|
|
22
|
+
expiry
|
|
23
|
+
});
|
|
24
|
+
await Keychain.setInternetCredentials(key, 'token', data, {
|
|
25
|
+
service: key
|
|
26
|
+
}); // Ensure service matches
|
|
27
|
+
_index.Logger.info(`Token stored successfully for key: ${key}`);
|
|
28
|
+
} catch (error) {
|
|
29
|
+
_index.Logger.error(`Error storing token for key: ${key}`, error);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Parse token data from credentials.
|
|
35
|
+
*/
|
|
36
|
+
exports.storeToken = storeToken;
|
|
37
|
+
const parseTokenData = credentials => {
|
|
38
|
+
if (!credentials) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
const {
|
|
42
|
+
password
|
|
43
|
+
} = credentials;
|
|
44
|
+
try {
|
|
45
|
+
const parsed = JSON.parse(password);
|
|
46
|
+
if (parsed && typeof parsed === 'object' && 'token' in parsed && 'expiry' in parsed && typeof parsed.token === 'string' && typeof parsed.expiry === 'string') {
|
|
47
|
+
return parsed;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
} catch (error) {
|
|
51
|
+
_index.Logger.error('Failed to parse token data', error);
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Retrieve token and check if expired.
|
|
58
|
+
*/
|
|
59
|
+
const getToken = async key => {
|
|
60
|
+
_index.Logger.info(`Retrieving token for key: ${key}`);
|
|
61
|
+
try {
|
|
62
|
+
const credentials = await Keychain.getInternetCredentials(key, {
|
|
63
|
+
service: key
|
|
64
|
+
}); // Ensure service matches
|
|
65
|
+
const parsedData = parseTokenData(credentials);
|
|
66
|
+
_index.Logger.info(`Parsed token data for key: ${key}:`, parsedData);
|
|
67
|
+
if (!parsedData) {
|
|
68
|
+
_index.Logger.warn(`Invalid or no token data found for key: ${key}`);
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const {
|
|
72
|
+
token,
|
|
73
|
+
expiry
|
|
74
|
+
} = parsedData;
|
|
75
|
+
_index.Logger.info(`Token retrieved for key: ${key}, token: ${token}, expiry: ${expiry}`);
|
|
76
|
+
return {
|
|
77
|
+
token,
|
|
78
|
+
expiry
|
|
79
|
+
};
|
|
80
|
+
} catch (error) {
|
|
81
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
82
|
+
if (message.includes('Key permanently invalidated')) {
|
|
83
|
+
_index.Logger.error(`Key permanently invalidated for key: ${key}. Clearing the invalidated key.`);
|
|
84
|
+
await removeToken(key); // Clear the invalidated key
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
_index.Logger.error(`Error retrieving token for key: ${key}`, error);
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Remove token by key.
|
|
94
|
+
*/
|
|
95
|
+
exports.getToken = getToken;
|
|
96
|
+
const removeToken = async key => {
|
|
97
|
+
try {
|
|
98
|
+
await Keychain.resetInternetCredentials({
|
|
99
|
+
service: key
|
|
100
|
+
});
|
|
101
|
+
_index.Logger.info(`Token removed successfully for key: ${key}`);
|
|
102
|
+
} catch (error) {
|
|
103
|
+
_index.Logger.error(`Failed to remove token for key: ${key}`, error);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
exports.removeToken = removeToken;
|
|
107
|
+
//# sourceMappingURL=authStore.js.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "decodeJWT", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _jwt.decodeJWT;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "getJWTExpiry", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _jwt.getJWTExpiry;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "getToken", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _authStore.getToken;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "isJWTExpired", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _jwt.isJWTExpired;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "removeToken", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _authStore.removeToken;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "storeToken", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _authStore.storeToken;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
var _authStore = require("./authStore.js");
|
|
43
|
+
var _jwt = require("./jwt.js");
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isJWTExpired = exports.getJWTExpiry = exports.decodeJWT = void 0;
|
|
7
|
+
var _index = require("../logger/index.js");
|
|
8
|
+
/**
|
|
9
|
+
* Standard claims plus arbitrary keys.
|
|
10
|
+
* `sub`, `exp`, `iat`, `nbf` follow RFC 7519 conventions.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
const base64UrlToBase64 = input => {
|
|
14
|
+
const padded = input + '='.repeat((4 - input.length % 4) % 4);
|
|
15
|
+
return padded.replace(/-/g, '+').replace(/_/g, '/');
|
|
16
|
+
};
|
|
17
|
+
const decodeBase64 = input => {
|
|
18
|
+
// RN runtimes expose `atob` (Hermes 0.71+); fall back to a Buffer-based decode otherwise.
|
|
19
|
+
if (typeof atob === 'function') {
|
|
20
|
+
return atob(input);
|
|
21
|
+
}
|
|
22
|
+
/* eslint-disable @typescript-eslint/no-require-imports */
|
|
23
|
+
const {
|
|
24
|
+
Buffer
|
|
25
|
+
} = require('buffer');
|
|
26
|
+
/* eslint-enable */
|
|
27
|
+
return Buffer.from(input, 'base64').toString('utf-8');
|
|
28
|
+
};
|
|
29
|
+
const utf8FromBinary = binary => {
|
|
30
|
+
// Convert percent-encoded UTF-8 sequence so multi-byte chars survive.
|
|
31
|
+
try {
|
|
32
|
+
return decodeURIComponent(binary.split('').map(c => '%' + c.charCodeAt(0).toString(16).padStart(2, '0')).join(''));
|
|
33
|
+
} catch {
|
|
34
|
+
return binary;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Decode a JWT's payload claims. Does **not** verify the signature.
|
|
40
|
+
*
|
|
41
|
+
* @returns claims object on success, `null` if the token is malformed.
|
|
42
|
+
*/
|
|
43
|
+
const decodeJWT = token => {
|
|
44
|
+
if (!token || typeof token !== 'string') return null;
|
|
45
|
+
const parts = token.split('.');
|
|
46
|
+
if (parts.length !== 3) {
|
|
47
|
+
_index.Logger.warn('[jwt] decodeJWT: token is not a valid JWT (expected 3 segments)');
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const payload = parts[1];
|
|
52
|
+
const json = utf8FromBinary(decodeBase64(base64UrlToBase64(payload)));
|
|
53
|
+
return JSON.parse(json);
|
|
54
|
+
} catch (error) {
|
|
55
|
+
_index.Logger.warn('[jwt] decodeJWT failed to parse payload', error);
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Returns true when the token is expired (or unparseable / missing `exp`).
|
|
62
|
+
*
|
|
63
|
+
* @param token JWT string
|
|
64
|
+
* @param leewaySeconds amount of clock-skew tolerance to apply (default 30s)
|
|
65
|
+
*/
|
|
66
|
+
exports.decodeJWT = decodeJWT;
|
|
67
|
+
const isJWTExpired = (token, leewaySeconds = 30) => {
|
|
68
|
+
const claims = decodeJWT(token);
|
|
69
|
+
if (!claims || typeof claims.exp !== 'number') return true;
|
|
70
|
+
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
71
|
+
return claims.exp <= nowSeconds + leewaySeconds;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Returns the token's expiry as a Date, or `null` when no `exp` claim exists.
|
|
76
|
+
*/
|
|
77
|
+
exports.isJWTExpired = isJWTExpired;
|
|
78
|
+
const getJWTExpiry = token => {
|
|
79
|
+
const claims = decodeJWT(token);
|
|
80
|
+
if (!claims || typeof claims.exp !== 'number') return null;
|
|
81
|
+
return new Date(claims.exp * 1000);
|
|
82
|
+
};
|
|
83
|
+
exports.getJWTExpiry = getJWTExpiry;
|
|
84
|
+
//# sourceMappingURL=jwt.js.map
|