@multiplayer-app/session-recorder-react-native 1.0.1-beta.1 → 1.0.1-beta.10
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/LICENSE +1 -2
- package/README.md +216 -155
- package/SessionRecorderNative.podspec +35 -14
- package/android/build.gradle +50 -54
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/com/sessionrecordernative/SessionRecorderNativeConfig.kt +52 -0
- package/android/src/main/java/com/sessionrecordernative/SessionRecorderNativeModule.kt +861 -0
- package/android/src/main/java/com/sessionrecordernative/SessionRecorderNativePackage.kt +33 -0
- package/android/src/main/java/com/sessionrecordernative/SessionRecorderNativeSpec.kt +79 -0
- package/android/src/main/java/com/sessionrecordernative/model/TargetInfo.kt +9 -0
- package/android/src/main/java/com/sessionrecordernative/util/ViewUtils.kt +72 -0
- package/ios/GestureTargetFinder.swift +50 -0
- package/ios/SessionRecorderNative-Bridging-Header.h +2 -0
- package/ios/{GestureRecorderNative.m → SessionRecorderNative.mm} +17 -6
- package/ios/SessionRecorderNative.swift +256 -4
- package/lib/module/SessionRecorderNativeSpec.js +5 -0
- package/lib/module/SessionRecorderNativeSpec.js.map +1 -0
- package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js +23 -0
- package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js.map +1 -0
- package/lib/module/components/ScreenRecorderView/index.js +4 -0
- package/lib/module/components/ScreenRecorderView/index.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/ErrorBanner.js +64 -0
- package/lib/module/components/SessionRecorderWidget/ErrorBanner.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/FinalPopover.js +74 -0
- package/lib/module/components/SessionRecorderWidget/FinalPopover.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/FloatingButton.js +191 -0
- package/lib/module/components/SessionRecorderWidget/FloatingButton.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/InitialPopover.js +138 -0
- package/lib/module/components/SessionRecorderWidget/InitialPopover.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/ModalContainer.js +177 -0
- package/lib/module/components/SessionRecorderWidget/ModalContainer.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/ModalHeader.js +27 -0
- package/lib/module/components/SessionRecorderWidget/ModalHeader.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js +133 -0
- package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/icons.js +93 -0
- package/lib/module/components/SessionRecorderWidget/icons.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/index.js +5 -0
- package/lib/module/components/SessionRecorderWidget/index.js.map +1 -0
- package/lib/module/components/SessionRecorderWidget/styles.js +173 -0
- package/lib/module/components/SessionRecorderWidget/styles.js.map +1 -0
- package/lib/module/components/index.js +5 -0
- package/lib/module/components/index.js.map +1 -0
- package/lib/module/config/constants.js +42 -0
- package/lib/module/config/constants.js.map +1 -0
- package/lib/module/config/defaults.js +81 -0
- package/lib/module/config/defaults.js.map +1 -0
- package/lib/module/config/index.js +9 -0
- package/lib/module/config/index.js.map +1 -0
- package/lib/module/config/masking.js +35 -0
- package/lib/module/config/masking.js.map +1 -0
- package/lib/module/config/session-recorder.js +44 -0
- package/lib/module/config/session-recorder.js.map +1 -0
- package/lib/module/config/validators.js +28 -0
- package/lib/module/config/validators.js.map +1 -0
- package/lib/module/config/widget.js +35 -0
- package/lib/module/config/widget.js.map +1 -0
- package/lib/module/context/SessionRecorderContext.js +93 -0
- package/lib/module/context/SessionRecorderContext.js.map +1 -0
- package/lib/module/context/SessionRecorderStore.js +12 -0
- package/lib/module/context/SessionRecorderStore.js.map +1 -0
- package/lib/module/context/useSessionRecorderStore.js +20 -0
- package/lib/module/context/useSessionRecorderStore.js.map +1 -0
- package/lib/module/context/useStoreSelector.js +27 -0
- package/lib/module/context/useStoreSelector.js.map +1 -0
- package/lib/module/index.js +16 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/native/SessionRecorderNative.js +79 -0
- package/lib/module/native/SessionRecorderNative.js.map +1 -0
- package/lib/module/native/index.js +4 -0
- package/lib/module/native/index.js.map +1 -0
- package/lib/module/otel/helpers.js +218 -0
- package/lib/module/otel/helpers.js.map +1 -0
- package/lib/module/otel/index.js +95 -0
- package/lib/module/otel/index.js.map +1 -0
- package/lib/module/otel/instrumentations/index.js +102 -0
- package/lib/module/otel/instrumentations/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/patch/index.js +4 -0
- package/lib/module/patch/index.js.map +1 -0
- package/lib/module/patch/xhr.js +116 -0
- package/lib/module/patch/xhr.js.map +1 -0
- package/lib/module/recorder/eventExporter.js +130 -0
- package/lib/module/recorder/eventExporter.js.map +1 -0
- package/lib/module/recorder/gestureRecorder.js +641 -0
- package/lib/module/recorder/gestureRecorder.js.map +1 -0
- package/lib/module/recorder/index.js +168 -0
- package/lib/module/recorder/index.js.map +1 -0
- package/lib/module/recorder/navigationTracker.js +228 -0
- package/lib/module/recorder/navigationTracker.js.map +1 -0
- package/lib/module/recorder/screenRecorder.js +495 -0
- package/lib/module/recorder/screenRecorder.js.map +1 -0
- package/lib/module/services/api.service.js +149 -0
- package/lib/module/services/api.service.js.map +1 -0
- package/lib/module/services/network.service.js +178 -0
- package/lib/module/services/network.service.js.map +1 -0
- package/lib/module/services/screenMaskingService.js +107 -0
- package/lib/module/services/screenMaskingService.js.map +1 -0
- package/lib/module/services/storage.service.js +179 -0
- package/lib/module/services/storage.service.js.map +1 -0
- package/lib/module/session-recorder.js +541 -0
- package/lib/module/session-recorder.js.map +1 -0
- package/lib/module/types/configs.js +4 -0
- package/lib/module/types/configs.js.map +1 -0
- package/lib/module/types/expo-constants.d.js +2 -0
- package/lib/module/types/expo-constants.d.js.map +1 -0
- package/lib/module/types/index.js +11 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/types/session-recorder.js +68 -0
- package/lib/module/types/session-recorder.js.map +1 -0
- package/lib/module/types/session.js +9 -0
- package/lib/module/types/session.js.map +1 -0
- package/lib/module/utils/app-metadata.js +28 -0
- package/lib/module/utils/app-metadata.js.map +1 -0
- package/lib/module/utils/constants.optional.expo.js +6 -0
- package/lib/module/utils/constants.optional.expo.js.map +1 -0
- package/lib/module/utils/constants.optional.js +8 -0
- package/lib/module/utils/constants.optional.js.map +1 -0
- package/lib/module/utils/createStore.js +27 -0
- package/lib/module/utils/createStore.js.map +1 -0
- package/lib/module/utils/index.js +11 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/logger.js +185 -0
- package/lib/module/utils/logger.js.map +1 -0
- package/lib/module/utils/platform.js +340 -0
- package/lib/module/utils/platform.js.map +1 -0
- package/lib/module/utils/request-utils.js +58 -0
- package/lib/module/utils/request-utils.js.map +1 -0
- package/lib/module/utils/rrweb-events.js +276 -0
- package/lib/module/utils/rrweb-events.js.map +1 -0
- package/lib/module/utils/session.js +21 -0
- package/lib/module/utils/session.js.map +1 -0
- package/lib/module/utils/shallowEqual.js +17 -0
- package/lib/module/utils/shallowEqual.js.map +1 -0
- package/lib/module/utils/time.js +17 -0
- package/lib/module/utils/time.js.map +1 -0
- package/lib/module/utils/type-utils.js +69 -0
- package/lib/module/utils/type-utils.js.map +1 -0
- package/lib/module/version.js +4 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/{dist/native/SessionRecorderNative.d.ts → lib/typescript/src/SessionRecorderNativeSpec.d.ts} +23 -15
- package/lib/typescript/src/SessionRecorderNativeSpec.d.ts.map +1 -0
- package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts +6 -0
- package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts.map +1 -0
- package/lib/typescript/src/components/ScreenRecorderView/index.d.ts +2 -0
- package/lib/typescript/src/components/ScreenRecorderView/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/ErrorBanner.d.ts +1 -0
- package/lib/typescript/src/components/SessionRecorderWidget/ErrorBanner.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/FinalPopover.d.ts +2 -1
- package/lib/typescript/src/components/SessionRecorderWidget/FinalPopover.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/FloatingButton.d.ts +1 -0
- package/lib/typescript/src/components/SessionRecorderWidget/FloatingButton.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/InitialPopover.d.ts +2 -1
- package/lib/typescript/src/components/SessionRecorderWidget/InitialPopover.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/ModalContainer.d.ts +1 -0
- package/lib/typescript/src/components/SessionRecorderWidget/ModalContainer.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/ModalHeader.d.ts +1 -0
- package/lib/typescript/src/components/SessionRecorderWidget/ModalHeader.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/SessionRecorderWidget.d.ts +1 -0
- package/lib/typescript/src/components/SessionRecorderWidget/SessionRecorderWidget.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/icons.d.ts +1 -0
- package/lib/typescript/src/components/SessionRecorderWidget/icons.d.ts.map +1 -0
- package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts +3 -0
- package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/components/SessionRecorderWidget/styles.d.ts +4 -3
- package/lib/typescript/src/components/SessionRecorderWidget/styles.d.ts.map +1 -0
- package/lib/typescript/src/components/index.d.ts +3 -0
- package/lib/typescript/src/components/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/config/constants.d.ts +1 -0
- package/lib/typescript/src/config/constants.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/config/defaults.d.ts +2 -1
- package/lib/typescript/src/config/defaults.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/config/index.d.ts +1 -0
- package/lib/typescript/src/config/index.d.ts.map +1 -0
- package/lib/typescript/src/config/masking.d.ts +3 -0
- package/lib/typescript/src/config/masking.d.ts.map +1 -0
- package/lib/typescript/src/config/session-recorder.d.ts +3 -0
- package/lib/typescript/src/config/session-recorder.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/config/validators.d.ts +1 -0
- package/lib/typescript/src/config/validators.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/config/widget.d.ts +2 -1
- package/lib/typescript/src/config/widget.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/context/SessionRecorderContext.d.ts +3 -2
- package/lib/typescript/src/context/SessionRecorderContext.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/context/SessionRecorderStore.d.ts +2 -1
- package/lib/typescript/src/context/SessionRecorderStore.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/context/useSessionRecorderStore.d.ts +4 -3
- package/lib/typescript/src/context/useSessionRecorderStore.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/context/useStoreSelector.d.ts +2 -1
- package/lib/typescript/src/context/useStoreSelector.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/index.d.ts +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/native/SessionRecorderNative.d.ts +27 -0
- package/lib/typescript/src/native/SessionRecorderNative.d.ts.map +1 -0
- package/lib/typescript/src/native/index.d.ts +2 -0
- package/lib/typescript/src/native/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/otel/helpers.d.ts +3 -2
- package/lib/typescript/src/otel/helpers.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/otel/index.d.ts +2 -2
- package/lib/typescript/src/otel/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/otel/instrumentations/index.d.ts +2 -1
- package/lib/typescript/src/otel/instrumentations/index.d.ts.map +1 -0
- package/lib/typescript/src/patch/index.d.ts +2 -0
- package/lib/typescript/src/patch/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/patch/xhr.d.ts +1 -0
- package/lib/typescript/src/patch/xhr.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/recorder/eventExporter.d.ts +2 -1
- package/lib/typescript/src/recorder/eventExporter.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/recorder/gestureRecorder.d.ts +3 -2
- package/lib/typescript/src/recorder/gestureRecorder.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/recorder/index.d.ts +3 -2
- package/lib/typescript/src/recorder/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/recorder/navigationTracker.d.ts +2 -1
- package/lib/typescript/src/recorder/navigationTracker.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/recorder/screenRecorder.d.ts +4 -4
- package/lib/typescript/src/recorder/screenRecorder.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/services/api.service.d.ts +2 -1
- package/lib/typescript/src/services/api.service.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/services/network.service.d.ts +1 -0
- package/lib/typescript/src/services/network.service.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/services/screenMaskingService.d.ts +2 -1
- package/lib/typescript/src/services/screenMaskingService.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/services/storage.service.d.ts +2 -1
- package/lib/typescript/src/services/storage.service.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/session-recorder.d.ts +3 -2
- package/lib/typescript/src/session-recorder.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/types/configs.d.ts +3 -2
- package/lib/typescript/src/types/configs.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/types/index.d.ts +1 -0
- package/lib/typescript/src/types/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/types/session-recorder.d.ts +7 -6
- package/lib/typescript/src/types/session-recorder.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/types/session.d.ts +1 -0
- package/lib/typescript/src/types/session.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/app-metadata.d.ts +1 -0
- package/lib/typescript/src/utils/app-metadata.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/constants.optional.d.ts +1 -0
- package/lib/typescript/src/utils/constants.optional.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/constants.optional.expo.d.ts +1 -0
- package/lib/typescript/src/utils/constants.optional.expo.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/createStore.d.ts +1 -0
- package/lib/typescript/src/utils/createStore.d.ts.map +1 -0
- package/lib/typescript/src/utils/index.d.ts +8 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/logger.d.ts +2 -1
- package/lib/typescript/src/utils/logger.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/platform.d.ts +2 -1
- package/lib/typescript/src/utils/platform.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/request-utils.d.ts +1 -0
- package/lib/typescript/src/utils/request-utils.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/rrweb-events.d.ts +2 -1
- package/lib/typescript/src/utils/rrweb-events.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/session.d.ts +1 -0
- package/lib/typescript/src/utils/session.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/shallowEqual.d.ts +1 -0
- package/lib/typescript/src/utils/shallowEqual.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/time.d.ts +1 -0
- package/lib/typescript/src/utils/time.d.ts.map +1 -0
- package/{dist → lib/typescript/src}/utils/type-utils.d.ts +1 -0
- package/lib/typescript/src/utils/type-utils.d.ts.map +1 -0
- package/lib/typescript/src/version.d.ts +2 -0
- package/lib/typescript/src/version.d.ts.map +1 -0
- package/package.json +154 -37
- package/react-native.config.js +14 -0
- package/src/SessionRecorderNativeSpec.ts +52 -0
- package/src/components/ScreenRecorderView/ScreenRecorderView.tsx +20 -0
- package/src/components/ScreenRecorderView/index.ts +1 -0
- package/src/components/SessionRecorderWidget/ErrorBanner.tsx +58 -0
- package/src/components/SessionRecorderWidget/FinalPopover.tsx +96 -0
- package/src/components/SessionRecorderWidget/FloatingButton.tsx +176 -0
- package/src/components/SessionRecorderWidget/InitialPopover.tsx +167 -0
- package/src/components/SessionRecorderWidget/ModalContainer.tsx +189 -0
- package/src/components/SessionRecorderWidget/ModalHeader.tsx +26 -0
- package/src/components/SessionRecorderWidget/SessionRecorderWidget.tsx +150 -0
- package/src/components/SessionRecorderWidget/icons.tsx +80 -0
- package/src/components/SessionRecorderWidget/index.ts +3 -0
- package/src/components/SessionRecorderWidget/styles.ts +168 -0
- package/src/config/constants.ts +67 -0
- package/src/config/defaults.ts +105 -0
- package/src/config/index.ts +6 -0
- package/src/config/masking.ts +60 -0
- package/src/config/session-recorder.ts +87 -0
- package/src/config/validators.ts +54 -0
- package/src/config/widget.ts +47 -0
- package/src/context/SessionRecorderContext.tsx +138 -0
- package/src/context/SessionRecorderStore.ts +22 -0
- package/src/context/useSessionRecorderStore.ts +34 -0
- package/src/context/useStoreSelector.ts +36 -0
- package/src/index.ts +13 -0
- package/src/native/SessionRecorderNative.ts +120 -0
- package/src/native/index.ts +5 -0
- package/src/otel/helpers.ts +290 -0
- package/src/otel/index.ts +132 -0
- package/src/otel/instrumentations/index.ts +118 -0
- package/src/patch/xhr.ts +148 -0
- package/src/recorder/eventExporter.ts +150 -0
- package/src/recorder/gestureRecorder.ts +828 -0
- package/src/recorder/index.ts +203 -0
- package/src/recorder/navigationTracker.ts +268 -0
- package/src/recorder/screenRecorder.ts +600 -0
- package/src/services/api.service.ts +216 -0
- package/src/services/network.service.ts +191 -0
- package/src/services/screenMaskingService.ts +153 -0
- package/src/services/storage.service.ts +248 -0
- package/src/session-recorder.ts +647 -0
- package/src/types/configs.ts +118 -0
- package/src/types/expo-constants.d.ts +7 -0
- package/src/types/index.ts +27 -0
- package/src/types/session-recorder.ts +381 -0
- package/src/types/session.ts +65 -0
- package/src/utils/app-metadata.ts +31 -0
- package/src/utils/constants.optional.expo.ts +5 -0
- package/src/utils/constants.optional.ts +18 -0
- package/src/utils/createStore.ts +32 -0
- package/{dist/utils/index.d.ts → src/utils/index.ts} +1 -0
- package/src/utils/logger.ts +245 -0
- package/src/utils/platform.ts +401 -0
- package/src/utils/request-utils.ts +61 -0
- package/src/utils/rrweb-events.ts +329 -0
- package/src/utils/session.ts +22 -0
- package/src/utils/shallowEqual.ts +20 -0
- package/src/utils/time.ts +20 -0
- package/src/utils/type-utils.ts +75 -0
- package/src/version.ts +1 -0
- package/copy-react-native-dist.sh +0 -56
- package/dist/components/ScreenRecorderView/ScreenRecorderView.d.ts +0 -5
- package/dist/components/ScreenRecorderView/ScreenRecorderView.js +0 -1
- package/dist/components/ScreenRecorderView/ScreenRecorderView.js.map +0 -1
- package/dist/components/ScreenRecorderView/index.d.ts +0 -1
- package/dist/components/ScreenRecorderView/index.js +0 -1
- package/dist/components/ScreenRecorderView/index.js.map +0 -1
- package/dist/components/SessionRecorderWidget/ErrorBanner.js +0 -1
- package/dist/components/SessionRecorderWidget/ErrorBanner.js.map +0 -1
- package/dist/components/SessionRecorderWidget/FinalPopover.js +0 -1
- package/dist/components/SessionRecorderWidget/FinalPopover.js.map +0 -1
- package/dist/components/SessionRecorderWidget/FloatingButton.js +0 -1
- package/dist/components/SessionRecorderWidget/FloatingButton.js.map +0 -1
- package/dist/components/SessionRecorderWidget/InitialPopover.js +0 -1
- package/dist/components/SessionRecorderWidget/InitialPopover.js.map +0 -1
- package/dist/components/SessionRecorderWidget/ModalContainer.js +0 -1
- package/dist/components/SessionRecorderWidget/ModalContainer.js.map +0 -1
- package/dist/components/SessionRecorderWidget/ModalHeader.js +0 -1
- package/dist/components/SessionRecorderWidget/ModalHeader.js.map +0 -1
- package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js +0 -1
- package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js.map +0 -1
- package/dist/components/SessionRecorderWidget/icons.js +0 -1
- package/dist/components/SessionRecorderWidget/icons.js.map +0 -1
- package/dist/components/SessionRecorderWidget/index.d.ts +0 -2
- package/dist/components/SessionRecorderWidget/index.js +0 -1
- package/dist/components/SessionRecorderWidget/index.js.map +0 -1
- package/dist/components/SessionRecorderWidget/styles.js +0 -1
- package/dist/components/SessionRecorderWidget/styles.js.map +0 -1
- package/dist/components/index.js +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/config/constants.js +0 -1
- package/dist/config/constants.js.map +0 -1
- package/dist/config/defaults.js +0 -1
- package/dist/config/defaults.js.map +0 -1
- package/dist/config/index.js +0 -1
- package/dist/config/index.js.map +0 -1
- package/dist/config/masking.d.ts +0 -2
- package/dist/config/masking.js +0 -1
- package/dist/config/masking.js.map +0 -1
- package/dist/config/session-recorder.d.ts +0 -2
- package/dist/config/session-recorder.js +0 -1
- package/dist/config/session-recorder.js.map +0 -1
- package/dist/config/validators.js +0 -1
- package/dist/config/validators.js.map +0 -1
- package/dist/config/widget.js +0 -1
- package/dist/config/widget.js.map +0 -1
- package/dist/context/SessionRecorderContext.js +0 -1
- package/dist/context/SessionRecorderContext.js.map +0 -1
- package/dist/context/SessionRecorderStore.js +0 -1
- package/dist/context/SessionRecorderStore.js.map +0 -1
- package/dist/context/useSessionRecorderStore.js +0 -1
- package/dist/context/useSessionRecorderStore.js.map +0 -1
- package/dist/context/useStoreSelector.js +0 -1
- package/dist/context/useStoreSelector.js.map +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +0 -1
- package/dist/native/GestureRecorderNative.d.ts +0 -57
- package/dist/native/GestureRecorderNative.js +0 -1
- package/dist/native/GestureRecorderNative.js.map +0 -1
- package/dist/native/GestureRecorderNativeTurboSpec.d.ts +0 -31
- package/dist/native/GestureRecorderNativeTurboSpec.js +0 -1
- package/dist/native/GestureRecorderNativeTurboSpec.js.map +0 -1
- package/dist/native/SessionRecorderNative.js +0 -1
- package/dist/native/SessionRecorderNative.js.map +0 -1
- package/dist/native/SessionRecorderNativeTurboSpec.d.ts +0 -17
- package/dist/native/SessionRecorderNativeTurboSpec.js +0 -1
- package/dist/native/SessionRecorderNativeTurboSpec.js.map +0 -1
- package/dist/native/index.d.ts +0 -2
- package/dist/native/index.js +0 -1
- package/dist/native/index.js.map +0 -1
- package/dist/otel/helpers.js +0 -1
- package/dist/otel/helpers.js.map +0 -1
- package/dist/otel/index.js +0 -1
- package/dist/otel/index.js.map +0 -1
- package/dist/otel/instrumentations/index.js +0 -1
- package/dist/otel/instrumentations/index.js.map +0 -1
- package/dist/patch/index.js +0 -1
- package/dist/patch/index.js.map +0 -1
- package/dist/patch/xhr.js +0 -1
- package/dist/patch/xhr.js.map +0 -1
- package/dist/recorder/eventExporter.js +0 -1
- package/dist/recorder/eventExporter.js.map +0 -1
- package/dist/recorder/gestureRecorder.js +0 -1
- package/dist/recorder/gestureRecorder.js.map +0 -1
- package/dist/recorder/index.js +0 -1
- package/dist/recorder/index.js.map +0 -1
- package/dist/recorder/navigationTracker.js +0 -1
- package/dist/recorder/navigationTracker.js.map +0 -1
- package/dist/recorder/screenRecorder.js +0 -1
- package/dist/recorder/screenRecorder.js.map +0 -1
- package/dist/services/api.service.js +0 -1
- package/dist/services/api.service.js.map +0 -1
- package/dist/services/network.service.js +0 -1
- package/dist/services/network.service.js.map +0 -1
- package/dist/services/screenMaskingService.js +0 -1
- package/dist/services/screenMaskingService.js.map +0 -1
- package/dist/services/storage.service.js +0 -1
- package/dist/services/storage.service.js.map +0 -1
- package/dist/session-recorder.js +0 -1
- package/dist/session-recorder.js.map +0 -1
- package/dist/types/configs.js +0 -1
- package/dist/types/configs.js.map +0 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/session-recorder.js +0 -1
- package/dist/types/session-recorder.js.map +0 -1
- package/dist/types/session.js +0 -1
- package/dist/types/session.js.map +0 -1
- package/dist/utils/app-metadata.js +0 -1
- package/dist/utils/app-metadata.js.map +0 -1
- package/dist/utils/constants.optional.expo.js +0 -1
- package/dist/utils/constants.optional.expo.js.map +0 -1
- package/dist/utils/constants.optional.js +0 -1
- package/dist/utils/constants.optional.js.map +0 -1
- package/dist/utils/createStore.js +0 -1
- package/dist/utils/createStore.js.map +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/logger.js +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/platform.js +0 -1
- package/dist/utils/platform.js.map +0 -1
- package/dist/utils/request-utils.js +0 -1
- package/dist/utils/request-utils.js.map +0 -1
- package/dist/utils/rrweb-events.js +0 -1
- package/dist/utils/rrweb-events.js.map +0 -1
- package/dist/utils/session.js +0 -1
- package/dist/utils/session.js.map +0 -1
- package/dist/utils/shallowEqual.js +0 -1
- package/dist/utils/shallowEqual.js.map +0 -1
- package/dist/utils/time.js +0 -1
- package/dist/utils/time.js.map +0 -1
- package/dist/utils/type-utils.js +0 -1
- package/dist/utils/type-utils.js.map +0 -1
- package/dist/version.d.ts +0 -1
- package/dist/version.js +0 -1
- package/dist/version.js.map +0 -1
- package/docs/AUTO_METADATA_DETECTION.md +0 -108
- package/ios/GestureRecorderNative.swift +0 -316
- package/ios/SessionRecorderNative.m +0 -17
- package/ios/SessionRecorderNative.podspec +0 -26
- package/turbo.json +0 -41
- /package/{dist/components/index.d.ts → src/components/index.ts} +0 -0
- /package/{dist/patch/index.d.ts → src/patch/index.ts} +0 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
import { logger } from "../utils/index.js";
|
|
5
|
+
import { sessionRecorderStore } from "../context/SessionRecorderStore.js";
|
|
6
|
+
|
|
7
|
+
// Safe import for NetInfo with web fallback
|
|
8
|
+
let NetInfo = null;
|
|
9
|
+
const isWeb = Platform.OS === 'web';
|
|
10
|
+
if (!isWeb) {
|
|
11
|
+
try {
|
|
12
|
+
NetInfo = require('@react-native-community/netinfo').default;
|
|
13
|
+
} catch (error) {
|
|
14
|
+
console.warn('NetInfo not available:', error);
|
|
15
|
+
}
|
|
16
|
+
} else {
|
|
17
|
+
// Web fallback using navigator.onLine
|
|
18
|
+
NetInfo = {
|
|
19
|
+
fetch: () => Promise.resolve({
|
|
20
|
+
isConnected: true,
|
|
21
|
+
// Default to connected for web
|
|
22
|
+
type: 'unknown',
|
|
23
|
+
isInternetReachable: true
|
|
24
|
+
}),
|
|
25
|
+
addEventListener: _callback => {
|
|
26
|
+
// Return a no-op function for web
|
|
27
|
+
return () => {};
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export class NetworkService {
|
|
32
|
+
static instance = null;
|
|
33
|
+
_isOnline = true;
|
|
34
|
+
unsubscribe = null;
|
|
35
|
+
callbacks = [];
|
|
36
|
+
constructor() {
|
|
37
|
+
// Private constructor for singleton
|
|
38
|
+
}
|
|
39
|
+
static getInstance() {
|
|
40
|
+
if (!NetworkService.instance) {
|
|
41
|
+
NetworkService.instance = new NetworkService();
|
|
42
|
+
}
|
|
43
|
+
return NetworkService.instance;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Initialize network monitoring
|
|
48
|
+
*/
|
|
49
|
+
async init() {
|
|
50
|
+
try {
|
|
51
|
+
// Get initial network state
|
|
52
|
+
const initialState = await NetInfo.fetch();
|
|
53
|
+
this._isOnline = initialState.isConnected ?? true;
|
|
54
|
+
|
|
55
|
+
// Update store with initial state
|
|
56
|
+
sessionRecorderStore.setState({
|
|
57
|
+
isOnline: this._isOnline
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Notify callbacks
|
|
61
|
+
this.notifyCallbacks({
|
|
62
|
+
isConnected: this._isOnline,
|
|
63
|
+
type: initialState.type,
|
|
64
|
+
isInternetReachable: initialState.isInternetReachable
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
// Listen for network state changes
|
|
68
|
+
this.unsubscribe = NetInfo.addEventListener(state => {
|
|
69
|
+
const wasOnline = this._isOnline;
|
|
70
|
+
this._isOnline = state.isConnected ?? true;
|
|
71
|
+
|
|
72
|
+
// Update store
|
|
73
|
+
sessionRecorderStore.setState({
|
|
74
|
+
isOnline: this._isOnline
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Notify callbacks
|
|
78
|
+
this.notifyCallbacks({
|
|
79
|
+
isConnected: this._isOnline,
|
|
80
|
+
type: state.type,
|
|
81
|
+
isInternetReachable: state.isInternetReachable
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
// Log state changes
|
|
85
|
+
if (wasOnline && !this._isOnline) {
|
|
86
|
+
logger.info('NetworkService', 'Network went offline');
|
|
87
|
+
} else if (!wasOnline && this._isOnline) {
|
|
88
|
+
logger.info('NetworkService', 'Network came back online');
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
logger.info('NetworkService', 'Network monitoring initialized');
|
|
92
|
+
} catch (error) {
|
|
93
|
+
logger.error('NetworkService', 'Failed to initialize network monitoring', error);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Get current network state
|
|
99
|
+
*/
|
|
100
|
+
getCurrentState() {
|
|
101
|
+
return {
|
|
102
|
+
isConnected: this._isOnline,
|
|
103
|
+
type: null,
|
|
104
|
+
// We don't store this in the service
|
|
105
|
+
isInternetReachable: null // We don't store this in the service
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Check if device is online
|
|
111
|
+
*/
|
|
112
|
+
isOnline() {
|
|
113
|
+
return this._isOnline;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Add callback for network state changes
|
|
118
|
+
*/
|
|
119
|
+
addCallback(callback) {
|
|
120
|
+
this.callbacks.push(callback);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Remove callback for network state changes
|
|
125
|
+
*/
|
|
126
|
+
removeCallback(callback) {
|
|
127
|
+
this.callbacks = this.callbacks.filter(cb => cb !== callback);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Notify all callbacks of network state change
|
|
132
|
+
*/
|
|
133
|
+
notifyCallbacks(state) {
|
|
134
|
+
this.callbacks.forEach(callback => {
|
|
135
|
+
try {
|
|
136
|
+
callback(state);
|
|
137
|
+
} catch (error) {
|
|
138
|
+
logger.error('NetworkService', 'Error in network state callback', error);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Cleanup network monitoring
|
|
145
|
+
*/
|
|
146
|
+
cleanup() {
|
|
147
|
+
if (this.unsubscribe) {
|
|
148
|
+
this.unsubscribe();
|
|
149
|
+
this.unsubscribe = null;
|
|
150
|
+
}
|
|
151
|
+
this.callbacks = [];
|
|
152
|
+
logger.info('NetworkService', 'Network monitoring cleaned up');
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Force refresh network state
|
|
157
|
+
*/
|
|
158
|
+
async refresh() {
|
|
159
|
+
try {
|
|
160
|
+
const state = await NetInfo.fetch();
|
|
161
|
+
this._isOnline = state.isConnected ?? true;
|
|
162
|
+
sessionRecorderStore.setState({
|
|
163
|
+
isOnline: this._isOnline
|
|
164
|
+
});
|
|
165
|
+
const networkState = {
|
|
166
|
+
isConnected: this._isOnline,
|
|
167
|
+
type: state.type,
|
|
168
|
+
isInternetReachable: state.isInternetReachable
|
|
169
|
+
};
|
|
170
|
+
this.notifyCallbacks(networkState);
|
|
171
|
+
return networkState;
|
|
172
|
+
} catch (error) {
|
|
173
|
+
logger.error('NetworkService', 'Failed to refresh network state', error);
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=network.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","logger","sessionRecorderStore","NetInfo","isWeb","OS","require","default","error","console","warn","fetch","Promise","resolve","isConnected","type","isInternetReachable","addEventListener","_callback","NetworkService","instance","_isOnline","unsubscribe","callbacks","constructor","getInstance","init","initialState","setState","isOnline","notifyCallbacks","state","wasOnline","info","getCurrentState","addCallback","callback","push","removeCallback","filter","cb","forEach","cleanup","refresh","networkState"],"sourceRoot":"../../../src","sources":["services/network.service.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import SessionRecorderNative from "../SessionRecorderNativeSpec.js";
|
|
4
|
+
import { logger } from "../utils/index.js";
|
|
5
|
+
export class ScreenMaskingService {
|
|
6
|
+
isAvailable = false;
|
|
7
|
+
constructor(config = {
|
|
8
|
+
enabled: true,
|
|
9
|
+
maskTextInputs: true,
|
|
10
|
+
maskImages: false,
|
|
11
|
+
maskButtons: false,
|
|
12
|
+
maskLabels: false,
|
|
13
|
+
maskWebViews: false,
|
|
14
|
+
maskSandboxedViews: false
|
|
15
|
+
}) {
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.checkAvailability();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Check if the native masking module is available
|
|
22
|
+
*/
|
|
23
|
+
checkAvailability() {
|
|
24
|
+
try {
|
|
25
|
+
// Try to access the native module to check if it's available
|
|
26
|
+
if (SessionRecorderNative && typeof SessionRecorderNative.captureAndMask === 'function') {
|
|
27
|
+
this.isAvailable = true;
|
|
28
|
+
logger.info('ScreenMaskingService', 'Screen masking native module is available');
|
|
29
|
+
} else {
|
|
30
|
+
this.isAvailable = false;
|
|
31
|
+
logger.warn('ScreenMaskingService', 'Screen masking native module is not available - auto-linking may still be in progress');
|
|
32
|
+
}
|
|
33
|
+
} catch (error) {
|
|
34
|
+
this.isAvailable = false;
|
|
35
|
+
logger.error('ScreenMaskingService', 'Error checking screen masking availability:', error);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Capture screen with masking applied
|
|
41
|
+
*/
|
|
42
|
+
async captureMaskedScreen(options) {
|
|
43
|
+
if (!this.isAvailable || !this.config.enabled) {
|
|
44
|
+
logger.warn('ScreenMaskingService', 'Screen masking is not available or disabled');
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
const maskingOptions = {
|
|
49
|
+
...this.config,
|
|
50
|
+
...options
|
|
51
|
+
};
|
|
52
|
+
const maskedImageBase64 = await SessionRecorderNative.captureAndMaskWithOptions(maskingOptions);
|
|
53
|
+
return maskedImageBase64;
|
|
54
|
+
} catch (error) {
|
|
55
|
+
logger.error('ScreenMaskingService', 'Failed to capture masked screen:', error);
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Capture screen with basic masking (no custom options)
|
|
62
|
+
*/
|
|
63
|
+
async captureMaskedScreenBasic() {
|
|
64
|
+
if (!this.isAvailable || !this.config.enabled) {
|
|
65
|
+
logger.warn('ScreenMaskingService', 'Screen masking is not available or disabled');
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
try {
|
|
69
|
+
const maskedImageBase64 = await SessionRecorderNative.captureAndMask();
|
|
70
|
+
return maskedImageBase64;
|
|
71
|
+
} catch (error) {
|
|
72
|
+
logger.error('ScreenMaskingService', 'Failed to capture masked screen (basic):', error);
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Update the masking configuration
|
|
79
|
+
*/
|
|
80
|
+
updateConfig(config) {
|
|
81
|
+
this.config = {
|
|
82
|
+
...this.config,
|
|
83
|
+
...config
|
|
84
|
+
};
|
|
85
|
+
logger.info('ScreenMaskingService', 'Screen masking configuration updated');
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Check if screen masking is available
|
|
90
|
+
*/
|
|
91
|
+
isScreenMaskingAvailable() {
|
|
92
|
+
return this.isAvailable && this.config.enabled;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Get the current configuration
|
|
97
|
+
*/
|
|
98
|
+
getConfig() {
|
|
99
|
+
return {
|
|
100
|
+
...this.config
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Create a singleton instance
|
|
106
|
+
export const screenMaskingService = new ScreenMaskingService();
|
|
107
|
+
//# sourceMappingURL=screenMaskingService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SessionRecorderNative","logger","ScreenMaskingService","isAvailable","constructor","config","enabled","maskTextInputs","maskImages","maskButtons","maskLabels","maskWebViews","maskSandboxedViews","checkAvailability","captureAndMask","info","warn","error","captureMaskedScreen","options","maskingOptions","maskedImageBase64","captureAndMaskWithOptions","captureMaskedScreenBasic","updateConfig","isScreenMaskingAvailable","getConfig","screenMaskingService"],"sourceRoot":"../../../src","sources":["services/screenMaskingService.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Platform } from 'react-native';
|
|
4
|
+
import { logger } from "../utils/index.js";
|
|
5
|
+
|
|
6
|
+
// Safe import for AsyncStorage with web fallback
|
|
7
|
+
let AsyncStorage = null;
|
|
8
|
+
const isWeb = Platform.OS === 'web';
|
|
9
|
+
if (!isWeb) {
|
|
10
|
+
try {
|
|
11
|
+
AsyncStorage = require('@react-native-async-storage/async-storage').default;
|
|
12
|
+
} catch (error) {
|
|
13
|
+
console.warn('AsyncStorage not available:', error);
|
|
14
|
+
}
|
|
15
|
+
} else {
|
|
16
|
+
// Web fallback using localStorage
|
|
17
|
+
AsyncStorage = {
|
|
18
|
+
getItem: _key => Promise.resolve(null),
|
|
19
|
+
// Simplified for web
|
|
20
|
+
setItem: (_key, _value) => Promise.resolve(undefined),
|
|
21
|
+
removeItem: _key => Promise.resolve(undefined),
|
|
22
|
+
multiRemove: _keys => Promise.resolve(undefined)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export class StorageService {
|
|
26
|
+
static SESSION_ID_KEY = 'session_id';
|
|
27
|
+
static SESSION_TYPE_KEY = 'session_type';
|
|
28
|
+
static SESSION_STATE_KEY = 'session_state';
|
|
29
|
+
static SESSION_OBJECT_KEY = 'session_object';
|
|
30
|
+
static FLOATING_BUTTON_POSITION_KEY = 'floating_button_position';
|
|
31
|
+
static cache = {
|
|
32
|
+
sessionId: null,
|
|
33
|
+
sessionType: null,
|
|
34
|
+
sessionState: null,
|
|
35
|
+
sessionObject: null,
|
|
36
|
+
floatingButtonPosition: null
|
|
37
|
+
};
|
|
38
|
+
static cacheInitialized = false;
|
|
39
|
+
static instance = null;
|
|
40
|
+
static positionSaveTimeout = null;
|
|
41
|
+
constructor() {
|
|
42
|
+
// Private constructor for singleton
|
|
43
|
+
}
|
|
44
|
+
static getInstance() {
|
|
45
|
+
if (!StorageService.instance) {
|
|
46
|
+
StorageService.instance = new StorageService();
|
|
47
|
+
StorageService.initialize();
|
|
48
|
+
}
|
|
49
|
+
return StorageService.instance;
|
|
50
|
+
}
|
|
51
|
+
static async initializeCache() {
|
|
52
|
+
if (StorageService.cacheInitialized) return;
|
|
53
|
+
try {
|
|
54
|
+
const [sessionId, sessionType, sessionState, sessionObject, floatingButtonPosition] = await Promise.all([AsyncStorage.getItem(StorageService.SESSION_ID_KEY), AsyncStorage.getItem(StorageService.SESSION_TYPE_KEY), AsyncStorage.getItem(StorageService.SESSION_STATE_KEY), AsyncStorage.getItem(StorageService.SESSION_OBJECT_KEY), AsyncStorage.getItem(StorageService.FLOATING_BUTTON_POSITION_KEY)]);
|
|
55
|
+
StorageService.cache = {
|
|
56
|
+
sessionId,
|
|
57
|
+
sessionType: sessionType,
|
|
58
|
+
sessionState: sessionState,
|
|
59
|
+
sessionObject: sessionObject ? JSON.parse(sessionObject) : null,
|
|
60
|
+
floatingButtonPosition: floatingButtonPosition ? JSON.parse(floatingButtonPosition) : null
|
|
61
|
+
};
|
|
62
|
+
StorageService.cacheInitialized = true;
|
|
63
|
+
} catch (error) {
|
|
64
|
+
// Failed to initialize cache - silently continue
|
|
65
|
+
StorageService.cacheInitialized = true; // Mark as initialized to prevent retries
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
saveSessionId(sessionId) {
|
|
69
|
+
try {
|
|
70
|
+
StorageService.cache.sessionId = sessionId;
|
|
71
|
+
AsyncStorage.setItem(StorageService.SESSION_ID_KEY, sessionId).catch(_error => {
|
|
72
|
+
// Failed to persist session ID - silently continue
|
|
73
|
+
});
|
|
74
|
+
} catch (error) {
|
|
75
|
+
// Failed to save session ID - silently continue
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
getSessionId() {
|
|
80
|
+
return StorageService.cache.sessionId;
|
|
81
|
+
}
|
|
82
|
+
saveSessionType(sessionType) {
|
|
83
|
+
try {
|
|
84
|
+
StorageService.cache.sessionType = sessionType;
|
|
85
|
+
AsyncStorage.setItem(StorageService.SESSION_TYPE_KEY, sessionType).catch(_error => {
|
|
86
|
+
// Failed to persist session type - silently continue
|
|
87
|
+
});
|
|
88
|
+
} catch (error) {
|
|
89
|
+
// Failed to save session type - silently continue
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
getSessionType() {
|
|
94
|
+
return StorageService.cache.sessionType;
|
|
95
|
+
}
|
|
96
|
+
saveSessionState(state) {
|
|
97
|
+
try {
|
|
98
|
+
StorageService.cache.sessionState = state;
|
|
99
|
+
AsyncStorage.setItem(StorageService.SESSION_STATE_KEY, state).catch(_error => {
|
|
100
|
+
// Failed to persist session state - silently continue
|
|
101
|
+
});
|
|
102
|
+
} catch (error) {
|
|
103
|
+
// Failed to save session state - silently continue
|
|
104
|
+
throw error;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
getSessionState() {
|
|
108
|
+
return StorageService.cache.sessionState;
|
|
109
|
+
}
|
|
110
|
+
saveSessionObject(session) {
|
|
111
|
+
try {
|
|
112
|
+
StorageService.cache.sessionObject = session;
|
|
113
|
+
AsyncStorage.setItem(StorageService.SESSION_OBJECT_KEY, JSON.stringify(session)).catch(_error => {
|
|
114
|
+
// Failed to persist session object - silently continue
|
|
115
|
+
});
|
|
116
|
+
} catch (error) {
|
|
117
|
+
// Failed to save session object - silently continue
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
getSessionObject() {
|
|
122
|
+
return StorageService.cache.sessionObject;
|
|
123
|
+
}
|
|
124
|
+
clearSessionData() {
|
|
125
|
+
try {
|
|
126
|
+
// Clear cache immediately
|
|
127
|
+
StorageService.cache = {
|
|
128
|
+
...StorageService.cache,
|
|
129
|
+
sessionId: null,
|
|
130
|
+
sessionType: null,
|
|
131
|
+
sessionState: null,
|
|
132
|
+
sessionObject: null
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// Clear persistent storage asynchronously
|
|
136
|
+
AsyncStorage.multiRemove([StorageService.SESSION_ID_KEY, StorageService.SESSION_TYPE_KEY, StorageService.SESSION_STATE_KEY, StorageService.SESSION_OBJECT_KEY]).catch(_error => {
|
|
137
|
+
// Failed to clear session data from storage - silently continue
|
|
138
|
+
});
|
|
139
|
+
} catch (error) {
|
|
140
|
+
// Failed to clear session data - silently continue
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
getAllSessionData() {
|
|
145
|
+
return {
|
|
146
|
+
sessionId: StorageService.cache.sessionId,
|
|
147
|
+
sessionType: StorageService.cache.sessionType,
|
|
148
|
+
sessionState: StorageService.cache.sessionState,
|
|
149
|
+
sessionObject: StorageService.cache.sessionObject
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
saveFloatingButtonPosition(position) {
|
|
153
|
+
try {
|
|
154
|
+
StorageService.cache.floatingButtonPosition = position;
|
|
155
|
+
|
|
156
|
+
// Debounce AsyncStorage writes to avoid excessive I/O
|
|
157
|
+
if (StorageService.positionSaveTimeout) {
|
|
158
|
+
clearTimeout(StorageService.positionSaveTimeout);
|
|
159
|
+
}
|
|
160
|
+
StorageService.positionSaveTimeout = setTimeout(() => {
|
|
161
|
+
AsyncStorage.setItem(StorageService.FLOATING_BUTTON_POSITION_KEY, JSON.stringify(position)).catch(error => {
|
|
162
|
+
logger.error('StorageService', 'Failed to persist floating button position', error);
|
|
163
|
+
});
|
|
164
|
+
}, 100); // 100ms debounce
|
|
165
|
+
} catch (error) {
|
|
166
|
+
logger.error('StorageService', 'Failed to save floating button position', error);
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
getFloatingButtonPosition() {
|
|
171
|
+
return StorageService.cache.floatingButtonPosition;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Initialize cache on first use - call this method when the service is first used
|
|
175
|
+
static async initialize() {
|
|
176
|
+
await StorageService.initializeCache();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=storage.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","logger","AsyncStorage","isWeb","OS","require","default","error","console","warn","getItem","_key","Promise","resolve","setItem","_value","undefined","removeItem","multiRemove","_keys","StorageService","SESSION_ID_KEY","SESSION_TYPE_KEY","SESSION_STATE_KEY","SESSION_OBJECT_KEY","FLOATING_BUTTON_POSITION_KEY","cache","sessionId","sessionType","sessionState","sessionObject","floatingButtonPosition","cacheInitialized","instance","positionSaveTimeout","constructor","getInstance","initialize","initializeCache","all","JSON","parse","saveSessionId","catch","_error","getSessionId","saveSessionType","getSessionType","saveSessionState","state","getSessionState","saveSessionObject","session","stringify","getSessionObject","clearSessionData","getAllSessionData","saveFloatingButtonPosition","position","clearTimeout","setTimeout","getFloatingButtonPosition"],"sourceRoot":"../../../src","sources":["services/storage.service.ts"],"mappings":"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","ignoreList":[]}
|