@multiplayer-app/session-recorder-react-native 1.3.37 → 2.0.17-alpha.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/package.json +4 -4
- package/src/NativeSessionRecorderModule.ts +4 -2
- package/src/NativeSessionRecorderModuleSpec.ts +4 -2
- package/src/NativeSessionRecorderNative.ts +1 -1
- package/src/index.ts +0 -1
- package/src/otel/instrumentations/index.ts +22 -22
- package/src/session-recorder.ts +4 -0
- package/src/types/configs.ts +1 -2
- package/lib/module/NativeSessionRecorderModule.js +0 -5
- package/lib/module/NativeSessionRecorderModule.js.map +0 -1
- package/lib/module/NativeSessionRecorderModuleSpec.js +0 -5
- package/lib/module/NativeSessionRecorderModuleSpec.js.map +0 -1
- package/lib/module/NativeSessionRecorderNative.js +0 -5
- package/lib/module/NativeSessionRecorderNative.js.map +0 -1
- package/lib/module/components/ErrorBoundary.js +0 -32
- package/lib/module/components/ErrorBoundary.js.map +0 -1
- package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js +0 -23
- package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js.map +0 -1
- package/lib/module/components/ScreenRecorderView/index.js +0 -4
- package/lib/module/components/ScreenRecorderView/index.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/ErrorBanner.js +0 -64
- package/lib/module/components/SessionRecorderWidget/ErrorBanner.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/FinalPopover.js +0 -74
- package/lib/module/components/SessionRecorderWidget/FinalPopover.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/FloatingButton.js +0 -191
- package/lib/module/components/SessionRecorderWidget/FloatingButton.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/InitialPopover.js +0 -138
- package/lib/module/components/SessionRecorderWidget/InitialPopover.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/ModalContainer.js +0 -177
- package/lib/module/components/SessionRecorderWidget/ModalContainer.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/ModalHeader.js +0 -27
- package/lib/module/components/SessionRecorderWidget/ModalHeader.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js +0 -133
- package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/icons.js +0 -93
- package/lib/module/components/SessionRecorderWidget/icons.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/index.js +0 -5
- package/lib/module/components/SessionRecorderWidget/index.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/styles.js +0 -173
- package/lib/module/components/SessionRecorderWidget/styles.js.map +0 -1
- package/lib/module/components/index.js +0 -6
- package/lib/module/components/index.js.map +0 -1
- package/lib/module/config/constants.js +0 -47
- package/lib/module/config/constants.js.map +0 -1
- package/lib/module/config/defaults.js +0 -87
- package/lib/module/config/defaults.js.map +0 -1
- package/lib/module/config/index.js +0 -9
- package/lib/module/config/index.js.map +0 -1
- package/lib/module/config/masking.js +0 -35
- package/lib/module/config/masking.js.map +0 -1
- package/lib/module/config/session-recorder.js +0 -50
- package/lib/module/config/session-recorder.js.map +0 -1
- package/lib/module/config/validators.js +0 -28
- package/lib/module/config/validators.js.map +0 -1
- package/lib/module/config/widget.js +0 -35
- package/lib/module/config/widget.js.map +0 -1
- package/lib/module/context/SessionRecorderContext.js +0 -100
- package/lib/module/context/SessionRecorderContext.js.map +0 -1
- package/lib/module/context/SessionRecorderStore.js +0 -12
- package/lib/module/context/SessionRecorderStore.js.map +0 -1
- package/lib/module/context/createStore.js +0 -27
- package/lib/module/context/createStore.js.map +0 -1
- package/lib/module/context/useSessionRecorderStore.js +0 -45
- package/lib/module/context/useSessionRecorderStore.js.map +0 -1
- package/lib/module/context/useStoreSelector.js +0 -27
- package/lib/module/context/useStoreSelector.js.map +0 -1
- package/lib/module/index.js +0 -14
- package/lib/module/index.js.map +0 -1
- package/lib/module/native/SessionRecorderNative.js +0 -76
- package/lib/module/native/SessionRecorderNative.js.map +0 -1
- package/lib/module/native/index.js +0 -4
- package/lib/module/native/index.js.map +0 -1
- package/lib/module/otel/CrashBufferSpanProcessor.js +0 -42
- package/lib/module/otel/CrashBufferSpanProcessor.js.map +0 -1
- package/lib/module/otel/helpers.js +0 -218
- package/lib/module/otel/helpers.js.map +0 -1
- package/lib/module/otel/index.js +0 -202
- package/lib/module/otel/index.js.map +0 -1
- package/lib/module/otel/instrumentations/index.js +0 -122
- package/lib/module/otel/instrumentations/index.js.map +0 -1
- package/lib/module/package.json +0 -1
- package/lib/module/patch/configs.js +0 -18
- package/lib/module/patch/configs.js.map +0 -1
- package/lib/module/patch/fetch.js +0 -222
- package/lib/module/patch/fetch.js.map +0 -1
- package/lib/module/patch/index.js +0 -6
- package/lib/module/patch/index.js.map +0 -1
- package/lib/module/patch/xhr.js +0 -100
- package/lib/module/patch/xhr.js.map +0 -1
- package/lib/module/recorder/gestureRecorder.js +0 -641
- package/lib/module/recorder/gestureRecorder.js.map +0 -1
- package/lib/module/recorder/index.js +0 -176
- package/lib/module/recorder/index.js.map +0 -1
- package/lib/module/recorder/navigationRecorder.js +0 -238
- package/lib/module/recorder/navigationRecorder.js.map +0 -1
- package/lib/module/recorder/screenRecorder.js +0 -527
- package/lib/module/recorder/screenRecorder.js.map +0 -1
- package/lib/module/services/api.service.js +0 -166
- package/lib/module/services/api.service.js.map +0 -1
- package/lib/module/services/crashBuffer.service.js +0 -280
- package/lib/module/services/crashBuffer.service.js.map +0 -1
- package/lib/module/services/network.service.js +0 -178
- package/lib/module/services/network.service.js.map +0 -1
- package/lib/module/services/screenRecordingService.js +0 -107
- package/lib/module/services/screenRecordingService.js.map +0 -1
- package/lib/module/services/socket.service.js +0 -186
- package/lib/module/services/socket.service.js.map +0 -1
- package/lib/module/services/storage.service.js +0 -178
- package/lib/module/services/storage.service.js.map +0 -1
- package/lib/module/session-recorder.js +0 -750
- package/lib/module/session-recorder.js.map +0 -1
- package/lib/module/types/configs.js +0 -4
- package/lib/module/types/configs.js.map +0 -1
- package/lib/module/types/expo-constants.d.js +0 -2
- package/lib/module/types/expo-constants.d.js.map +0 -1
- package/lib/module/types/index.js +0 -10
- package/lib/module/types/index.js.map +0 -1
- package/lib/module/types/session-recorder.js +0 -68
- package/lib/module/types/session-recorder.js.map +0 -1
- package/lib/module/utils/app-metadata.js +0 -28
- package/lib/module/utils/app-metadata.js.map +0 -1
- package/lib/module/utils/constants.optional.expo.js +0 -6
- package/lib/module/utils/constants.optional.expo.js.map +0 -1
- package/lib/module/utils/constants.optional.js +0 -8
- package/lib/module/utils/constants.optional.js.map +0 -1
- package/lib/module/utils/index.js +0 -11
- package/lib/module/utils/index.js.map +0 -1
- package/lib/module/utils/logger.js +0 -185
- package/lib/module/utils/logger.js.map +0 -1
- package/lib/module/utils/platform.js +0 -340
- package/lib/module/utils/platform.js.map +0 -1
- package/lib/module/utils/request-utils.js +0 -58
- package/lib/module/utils/request-utils.js.map +0 -1
- package/lib/module/utils/rrweb-events.js +0 -276
- package/lib/module/utils/rrweb-events.js.map +0 -1
- package/lib/module/utils/session.js +0 -21
- package/lib/module/utils/session.js.map +0 -1
- package/lib/module/utils/shallowEqual.js +0 -17
- package/lib/module/utils/shallowEqual.js.map +0 -1
- package/lib/module/utils/time.js +0 -17
- package/lib/module/utils/time.js.map +0 -1
- package/lib/module/utils/type-utils.js +0 -69
- package/lib/module/utils/type-utils.js.map +0 -1
- package/lib/module/version.js +0 -4
- package/lib/module/version.js.map +0 -1
- package/lib/typescript/package.json +0 -1
- package/lib/typescript/src/NativeSessionRecorderModule.d.ts +0 -25
- package/lib/typescript/src/NativeSessionRecorderModule.d.ts.map +0 -1
- package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts +0 -25
- package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts.map +0 -1
- package/lib/typescript/src/NativeSessionRecorderNative.d.ts +0 -25
- package/lib/typescript/src/NativeSessionRecorderNative.d.ts.map +0 -1
- package/lib/typescript/src/components/ErrorBoundary.d.ts +0 -16
- package/lib/typescript/src/components/ErrorBoundary.d.ts.map +0 -1
- package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts +0 -6
- package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts.map +0 -1
- package/lib/typescript/src/components/ScreenRecorderView/index.d.ts +0 -2
- package/lib/typescript/src/components/ScreenRecorderView/index.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/ErrorBanner.d.ts +0 -8
- package/lib/typescript/src/components/SessionRecorderWidget/ErrorBanner.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/FinalPopover.d.ts +0 -13
- package/lib/typescript/src/components/SessionRecorderWidget/FinalPopover.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/FloatingButton.d.ts +0 -9
- package/lib/typescript/src/components/SessionRecorderWidget/FloatingButton.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/InitialPopover.d.ts +0 -17
- package/lib/typescript/src/components/SessionRecorderWidget/InitialPopover.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/ModalContainer.d.ts +0 -9
- package/lib/typescript/src/components/SessionRecorderWidget/ModalContainer.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/ModalHeader.d.ts +0 -7
- package/lib/typescript/src/components/SessionRecorderWidget/ModalHeader.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/SessionRecorderWidget.d.ts +0 -6
- package/lib/typescript/src/components/SessionRecorderWidget/SessionRecorderWidget.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/icons.d.ts +0 -12
- package/lib/typescript/src/components/SessionRecorderWidget/icons.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts +0 -3
- package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/styles.d.ts +0 -166
- package/lib/typescript/src/components/SessionRecorderWidget/styles.d.ts.map +0 -1
- package/lib/typescript/src/components/index.d.ts +0 -4
- package/lib/typescript/src/components/index.d.ts.map +0 -1
- package/lib/typescript/src/config/constants.d.ts +0 -22
- package/lib/typescript/src/config/constants.d.ts.map +0 -1
- package/lib/typescript/src/config/defaults.d.ts +0 -5
- package/lib/typescript/src/config/defaults.d.ts.map +0 -1
- package/lib/typescript/src/config/index.d.ts +0 -6
- package/lib/typescript/src/config/index.d.ts.map +0 -1
- package/lib/typescript/src/config/masking.d.ts +0 -3
- package/lib/typescript/src/config/masking.d.ts.map +0 -1
- package/lib/typescript/src/config/session-recorder.d.ts +0 -3
- package/lib/typescript/src/config/session-recorder.d.ts.map +0 -1
- package/lib/typescript/src/config/validators.d.ts +0 -11
- package/lib/typescript/src/config/validators.d.ts.map +0 -1
- package/lib/typescript/src/config/widget.d.ts +0 -10
- package/lib/typescript/src/config/widget.d.ts.map +0 -1
- package/lib/typescript/src/context/SessionRecorderContext.d.ts +0 -22
- package/lib/typescript/src/context/SessionRecorderContext.d.ts.map +0 -1
- package/lib/typescript/src/context/SessionRecorderStore.d.ts +0 -13
- package/lib/typescript/src/context/SessionRecorderStore.d.ts.map +0 -1
- package/lib/typescript/src/context/createStore.d.ts +0 -9
- package/lib/typescript/src/context/createStore.d.ts.map +0 -1
- package/lib/typescript/src/context/useSessionRecorderStore.d.ts +0 -29
- package/lib/typescript/src/context/useSessionRecorderStore.d.ts.map +0 -1
- package/lib/typescript/src/context/useStoreSelector.d.ts +0 -5
- package/lib/typescript/src/context/useStoreSelector.d.ts.map +0 -1
- package/lib/typescript/src/index.d.ts +0 -9
- package/lib/typescript/src/index.d.ts.map +0 -1
- package/lib/typescript/src/native/SessionRecorderNative.d.ts +0 -29
- package/lib/typescript/src/native/SessionRecorderNative.d.ts.map +0 -1
- package/lib/typescript/src/native/index.d.ts +0 -2
- package/lib/typescript/src/native/index.d.ts.map +0 -1
- package/lib/typescript/src/otel/CrashBufferSpanProcessor.d.ts +0 -17
- package/lib/typescript/src/otel/CrashBufferSpanProcessor.d.ts.map +0 -1
- package/lib/typescript/src/otel/helpers.d.ts +0 -46
- package/lib/typescript/src/otel/helpers.d.ts.map +0 -1
- package/lib/typescript/src/otel/index.d.ts +0 -33
- package/lib/typescript/src/otel/index.d.ts.map +0 -1
- package/lib/typescript/src/otel/instrumentations/index.d.ts +0 -5
- package/lib/typescript/src/otel/instrumentations/index.d.ts.map +0 -1
- package/lib/typescript/src/patch/configs.d.ts +0 -9
- package/lib/typescript/src/patch/configs.d.ts.map +0 -1
- package/lib/typescript/src/patch/fetch.d.ts +0 -2
- package/lib/typescript/src/patch/fetch.d.ts.map +0 -1
- package/lib/typescript/src/patch/index.d.ts +0 -4
- package/lib/typescript/src/patch/index.d.ts.map +0 -1
- package/lib/typescript/src/patch/xhr.d.ts +0 -2
- package/lib/typescript/src/patch/xhr.d.ts.map +0 -1
- package/lib/typescript/src/recorder/gestureRecorder.d.ts +0 -66
- package/lib/typescript/src/recorder/gestureRecorder.d.ts.map +0 -1
- package/lib/typescript/src/recorder/index.d.ts +0 -79
- package/lib/typescript/src/recorder/index.d.ts.map +0 -1
- package/lib/typescript/src/recorder/navigationRecorder.d.ts +0 -29
- package/lib/typescript/src/recorder/navigationRecorder.d.ts.map +0 -1
- package/lib/typescript/src/recorder/screenRecorder.d.ts +0 -127
- package/lib/typescript/src/recorder/screenRecorder.d.ts.map +0 -1
- package/lib/typescript/src/services/api.service.d.ts +0 -116
- package/lib/typescript/src/services/api.service.d.ts.map +0 -1
- package/lib/typescript/src/services/crashBuffer.service.d.ts +0 -27
- package/lib/typescript/src/services/crashBuffer.service.d.ts.map +0 -1
- package/lib/typescript/src/services/network.service.d.ts +0 -47
- package/lib/typescript/src/services/network.service.d.ts.map +0 -1
- package/lib/typescript/src/services/screenRecordingService.d.ts +0 -48
- package/lib/typescript/src/services/screenRecordingService.d.ts.map +0 -1
- package/lib/typescript/src/services/socket.service.d.ts +0 -44
- package/lib/typescript/src/services/socket.service.d.ts.map +0 -1
- package/lib/typescript/src/services/storage.service.d.ts +0 -47
- package/lib/typescript/src/services/storage.service.d.ts.map +0 -1
- package/lib/typescript/src/session-recorder.d.ts +0 -191
- package/lib/typescript/src/session-recorder.d.ts.map +0 -1
- package/lib/typescript/src/types/configs.d.ts +0 -92
- package/lib/typescript/src/types/configs.d.ts.map +0 -1
- package/lib/typescript/src/types/index.d.ts +0 -21
- package/lib/typescript/src/types/index.d.ts.map +0 -1
- package/lib/typescript/src/types/session-recorder.d.ts +0 -367
- package/lib/typescript/src/types/session-recorder.d.ts.map +0 -1
- package/lib/typescript/src/utils/app-metadata.d.ts +0 -17
- package/lib/typescript/src/utils/app-metadata.d.ts.map +0 -1
- package/lib/typescript/src/utils/constants.optional.d.ts +0 -22
- package/lib/typescript/src/utils/constants.optional.d.ts.map +0 -1
- package/lib/typescript/src/utils/constants.optional.expo.d.ts +0 -4
- package/lib/typescript/src/utils/constants.optional.expo.d.ts.map +0 -1
- package/lib/typescript/src/utils/index.d.ts +0 -8
- package/lib/typescript/src/utils/index.d.ts.map +0 -1
- package/lib/typescript/src/utils/logger.d.ts +0 -108
- package/lib/typescript/src/utils/logger.d.ts.map +0 -1
- package/lib/typescript/src/utils/platform.d.ts +0 -58
- package/lib/typescript/src/utils/platform.d.ts.map +0 -1
- package/lib/typescript/src/utils/request-utils.d.ts +0 -22
- package/lib/typescript/src/utils/request-utils.d.ts.map +0 -1
- package/lib/typescript/src/utils/rrweb-events.d.ts +0 -67
- package/lib/typescript/src/utils/rrweb-events.d.ts.map +0 -1
- package/lib/typescript/src/utils/session.d.ts +0 -7
- package/lib/typescript/src/utils/session.d.ts.map +0 -1
- package/lib/typescript/src/utils/shallowEqual.d.ts +0 -2
- package/lib/typescript/src/utils/shallowEqual.d.ts.map +0 -1
- package/lib/typescript/src/utils/time.d.ts +0 -5
- package/lib/typescript/src/utils/time.d.ts.map +0 -1
- package/lib/typescript/src/utils/type-utils.d.ts +0 -17
- package/lib/typescript/src/utils/type-utils.d.ts.map +0 -1
- package/lib/typescript/src/version.d.ts +0 -2
- package/lib/typescript/src/version.d.ts.map +0 -1
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import SessionRecorderNative from "../native/SessionRecorderNative.js";
|
|
4
|
-
import { logger } from "../utils/index.js";
|
|
5
|
-
export class ScreenRecordingService {
|
|
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('ScreenRecordingService', 'Screen masking native module is available');
|
|
29
|
-
} else {
|
|
30
|
-
this.isAvailable = false;
|
|
31
|
-
logger.warn('ScreenRecordingService', '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('ScreenRecordingService', '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('ScreenRecordingService', '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('ScreenRecordingService', '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('ScreenRecordingService', '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('ScreenRecordingService', '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('ScreenRecordingService', 'Screen masking configuration updated');
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Check if screen masking is available
|
|
90
|
-
*/
|
|
91
|
-
isScreenRecordingAvailable() {
|
|
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 screenRecordingService = new ScreenRecordingService();
|
|
107
|
-
//# sourceMappingURL=screenRecordingService.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["SessionRecorderNative","logger","ScreenRecordingService","isAvailable","constructor","config","enabled","maskTextInputs","maskImages","maskButtons","maskLabels","maskWebViews","maskSandboxedViews","checkAvailability","captureAndMask","info","warn","error","captureMaskedScreen","options","maskingOptions","maskedImageBase64","captureAndMaskWithOptions","captureMaskedScreenBasic","updateConfig","isScreenRecordingAvailable","getConfig","screenRecordingService"],"sourceRoot":"../../../src","sources":["services/screenRecordingService.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import io from 'socket.io-client';
|
|
4
|
-
import { Observable } from 'lib0/observable';
|
|
5
|
-
import { logger } from "../utils/index.js";
|
|
6
|
-
import { SESSION_ADD_EVENT, SESSION_AUTO_CREATED, SESSION_STOPPED_EVENT, SESSION_SUBSCRIBE_EVENT, SESSION_UNSUBSCRIBE_EVENT, SOCKET_SET_USER_EVENT, REMOTE_SESSION_RECORDING_START, REMOTE_SESSION_RECORDING_STOP, SESSION_STARTED_EVENT, SESSION_SAVE_BUFFER_EVENT } from "../config/index.js";
|
|
7
|
-
import { ATTR_MULTIPLAYER_SESSION_CLIENT_ID } from '@multiplayer-app/session-recorder-common';
|
|
8
|
-
const MAX_RECONNECTION_ATTEMPTS = 2;
|
|
9
|
-
export class SocketService extends Observable {
|
|
10
|
-
socket = null;
|
|
11
|
-
queue = [];
|
|
12
|
-
isConnecting = false;
|
|
13
|
-
isConnected = false;
|
|
14
|
-
attempts = 0;
|
|
15
|
-
sessionId = null;
|
|
16
|
-
isInitialized = false;
|
|
17
|
-
constructor() {
|
|
18
|
-
super();
|
|
19
|
-
this.options = {
|
|
20
|
-
apiKey: '',
|
|
21
|
-
socketUrl: '',
|
|
22
|
-
keepAlive: false
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Initialize the socket service
|
|
28
|
-
* @param config - Socket service configuration
|
|
29
|
-
*/
|
|
30
|
-
init(config) {
|
|
31
|
-
this.options = {
|
|
32
|
-
...this.options,
|
|
33
|
-
...config
|
|
34
|
-
};
|
|
35
|
-
this.isInitialized = true;
|
|
36
|
-
if (this.options.keepAlive && this.options.socketUrl && this.options.apiKey) {
|
|
37
|
-
this._initConnection();
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Update the socket service configuration
|
|
43
|
-
* @param config - Partial configuration to update
|
|
44
|
-
*/
|
|
45
|
-
updateConfigs(config) {
|
|
46
|
-
// If any config changed, reconnect if connected
|
|
47
|
-
const hasChanges = Object.keys(config).some(key => {
|
|
48
|
-
const typedKey = key;
|
|
49
|
-
return config[typedKey] !== undefined && config[typedKey] !== this.options[typedKey];
|
|
50
|
-
});
|
|
51
|
-
if (hasChanges) {
|
|
52
|
-
this.options = {
|
|
53
|
-
...this.options,
|
|
54
|
-
...config
|
|
55
|
-
};
|
|
56
|
-
if (this.socket?.connected) {
|
|
57
|
-
this.close().then(() => {
|
|
58
|
-
if (this.options.keepAlive && this.options.socketUrl && this.options.apiKey) {
|
|
59
|
-
this._initConnection();
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
_initConnection() {
|
|
66
|
-
if (this.isConnecting || this.isConnected || !this.isInitialized) return;
|
|
67
|
-
this.attempts++;
|
|
68
|
-
this.isConnecting = true;
|
|
69
|
-
this.socket = io(this.options.socketUrl, {
|
|
70
|
-
path: '/v0/radar/ws',
|
|
71
|
-
auth: {
|
|
72
|
-
'x-api-key': this.options.apiKey,
|
|
73
|
-
...(this.options.clientId ? {
|
|
74
|
-
[ATTR_MULTIPLAYER_SESSION_CLIENT_ID]: this.options.clientId
|
|
75
|
-
} : {})
|
|
76
|
-
},
|
|
77
|
-
reconnectionAttempts: 2,
|
|
78
|
-
transports: ['websocket']
|
|
79
|
-
});
|
|
80
|
-
this.socket.on('ready', () => {
|
|
81
|
-
this.isConnecting = false;
|
|
82
|
-
this.isConnected = true;
|
|
83
|
-
logger.info('SocketService', 'Connected to server');
|
|
84
|
-
this.flushQueue();
|
|
85
|
-
});
|
|
86
|
-
this.socket.on('disconnect', _err => {
|
|
87
|
-
this.isConnecting = false;
|
|
88
|
-
this.isConnected = false;
|
|
89
|
-
logger.info('SocketService', 'Disconnected from server');
|
|
90
|
-
});
|
|
91
|
-
this.socket.on('connect_error', err => {
|
|
92
|
-
this.isConnecting = false;
|
|
93
|
-
this.isConnected = false;
|
|
94
|
-
this.checkReconnectionAttempts();
|
|
95
|
-
logger.error('SocketService', 'Error connecting to server', err);
|
|
96
|
-
});
|
|
97
|
-
this.socket.on(SESSION_STOPPED_EVENT, data => {
|
|
98
|
-
this.emit(SESSION_STOPPED_EVENT, [data]);
|
|
99
|
-
});
|
|
100
|
-
this.socket.on(SESSION_AUTO_CREATED, data => {
|
|
101
|
-
this.emit(SESSION_AUTO_CREATED, [data]);
|
|
102
|
-
});
|
|
103
|
-
this.socket.on(REMOTE_SESSION_RECORDING_START, data => {
|
|
104
|
-
this.emit(REMOTE_SESSION_RECORDING_START, [data]);
|
|
105
|
-
});
|
|
106
|
-
this.socket.on(REMOTE_SESSION_RECORDING_STOP, data => {
|
|
107
|
-
this.emit(REMOTE_SESSION_RECORDING_STOP, [data]);
|
|
108
|
-
});
|
|
109
|
-
this.socket.on(SESSION_SAVE_BUFFER_EVENT, data => {
|
|
110
|
-
this.emit(SESSION_SAVE_BUFFER_EVENT, [data]);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
checkReconnectionAttempts() {
|
|
114
|
-
if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
|
|
115
|
-
this.flushQueue();
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
emitSocketEvent(name, data) {
|
|
119
|
-
if (this.socket && this.isConnected) {
|
|
120
|
-
this.socket.emit(name, data);
|
|
121
|
-
} else {
|
|
122
|
-
this.queue.push({
|
|
123
|
-
data,
|
|
124
|
-
name
|
|
125
|
-
});
|
|
126
|
-
this._initConnection();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
flushQueue() {
|
|
130
|
-
while (this.queue.length > 0 && this.isConnected) {
|
|
131
|
-
const event = this.queue.shift();
|
|
132
|
-
if (!event) continue;
|
|
133
|
-
if (this.socket && this.isConnected) {
|
|
134
|
-
this.socket.emit(event.name, event.data);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
send(event) {
|
|
139
|
-
this.emitSocketEvent(SESSION_ADD_EVENT, event);
|
|
140
|
-
}
|
|
141
|
-
subscribeToSession(session) {
|
|
142
|
-
this.sessionId = session.shortId || session._id;
|
|
143
|
-
const payload = {
|
|
144
|
-
projectId: session.project,
|
|
145
|
-
workspaceId: session.workspace,
|
|
146
|
-
debugSessionId: this.sessionId,
|
|
147
|
-
sessionType: session.creationType
|
|
148
|
-
};
|
|
149
|
-
this.emitSocketEvent(SESSION_SUBSCRIBE_EVENT, payload);
|
|
150
|
-
// use long id instead of short id
|
|
151
|
-
this.emitSocketEvent(SESSION_STARTED_EVENT, {
|
|
152
|
-
debugSessionId: session._id
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
unsubscribeFromSession(stopSession) {
|
|
156
|
-
if (this.sessionId) {
|
|
157
|
-
this.emitSocketEvent(SESSION_UNSUBSCRIBE_EVENT, {
|
|
158
|
-
debugSessionId: this.sessionId
|
|
159
|
-
});
|
|
160
|
-
if (stopSession) {
|
|
161
|
-
this.emitSocketEvent(SESSION_STOPPED_EVENT, {});
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
setUser(data) {
|
|
166
|
-
this.emitSocketEvent(SOCKET_SET_USER_EVENT, data);
|
|
167
|
-
}
|
|
168
|
-
close() {
|
|
169
|
-
return new Promise(resolve => {
|
|
170
|
-
if (this.socket?.connected) {
|
|
171
|
-
setTimeout(() => {
|
|
172
|
-
this.unsubscribeFromSession();
|
|
173
|
-
this.attempts = 0;
|
|
174
|
-
this.isConnected = false;
|
|
175
|
-
this.isConnecting = false;
|
|
176
|
-
this.socket?.disconnect();
|
|
177
|
-
this.socket = null;
|
|
178
|
-
resolve();
|
|
179
|
-
}, 500);
|
|
180
|
-
} else {
|
|
181
|
-
resolve();
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=socket.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["io","Observable","logger","SESSION_ADD_EVENT","SESSION_AUTO_CREATED","SESSION_STOPPED_EVENT","SESSION_SUBSCRIBE_EVENT","SESSION_UNSUBSCRIBE_EVENT","SOCKET_SET_USER_EVENT","REMOTE_SESSION_RECORDING_START","REMOTE_SESSION_RECORDING_STOP","SESSION_STARTED_EVENT","SESSION_SAVE_BUFFER_EVENT","ATTR_MULTIPLAYER_SESSION_CLIENT_ID","MAX_RECONNECTION_ATTEMPTS","SocketService","socket","queue","isConnecting","isConnected","attempts","sessionId","isInitialized","constructor","options","apiKey","socketUrl","keepAlive","init","config","_initConnection","updateConfigs","hasChanges","Object","keys","some","key","typedKey","undefined","connected","close","then","path","auth","clientId","reconnectionAttempts","transports","on","info","flushQueue","_err","err","checkReconnectionAttempts","error","data","emit","emitSocketEvent","name","push","length","event","shift","send","subscribeToSession","session","shortId","_id","payload","projectId","project","workspaceId","workspace","debugSessionId","sessionType","creationType","unsubscribeFromSession","stopSession","setUser","Promise","resolve","setTimeout","disconnect"],"sourceRoot":"../../../src","sources":["services/socket.service.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { Platform } from 'react-native';
|
|
4
|
-
import { logger } from "../utils/index.js";
|
|
5
|
-
// Safe import for AsyncStorage with web fallback
|
|
6
|
-
let AsyncStorage = null;
|
|
7
|
-
const isWeb = Platform.OS === 'web';
|
|
8
|
-
if (!isWeb) {
|
|
9
|
-
try {
|
|
10
|
-
AsyncStorage = require('@react-native-async-storage/async-storage').default;
|
|
11
|
-
} catch (error) {
|
|
12
|
-
console.warn('AsyncStorage not available:', error);
|
|
13
|
-
}
|
|
14
|
-
} else {
|
|
15
|
-
// Web fallback using localStorage
|
|
16
|
-
AsyncStorage = {
|
|
17
|
-
getItem: _key => Promise.resolve(null),
|
|
18
|
-
// Simplified for web
|
|
19
|
-
setItem: (_key, _value) => Promise.resolve(undefined),
|
|
20
|
-
removeItem: _key => Promise.resolve(undefined),
|
|
21
|
-
multiRemove: _keys => Promise.resolve(undefined)
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export class StorageService {
|
|
25
|
-
static SESSION_ID_KEY = 'session_id';
|
|
26
|
-
static SESSION_TYPE_KEY = 'session_type';
|
|
27
|
-
static SESSION_STATE_KEY = 'session_state';
|
|
28
|
-
static SESSION_OBJECT_KEY = 'session_object';
|
|
29
|
-
static FLOATING_BUTTON_POSITION_KEY = 'floating_button_position';
|
|
30
|
-
static cache = {
|
|
31
|
-
sessionId: null,
|
|
32
|
-
sessionType: null,
|
|
33
|
-
sessionState: null,
|
|
34
|
-
sessionObject: null,
|
|
35
|
-
floatingButtonPosition: null
|
|
36
|
-
};
|
|
37
|
-
static cacheInitialized = false;
|
|
38
|
-
static instance = null;
|
|
39
|
-
static positionSaveTimeout = null;
|
|
40
|
-
constructor() {
|
|
41
|
-
// Private constructor for singleton
|
|
42
|
-
}
|
|
43
|
-
static getInstance() {
|
|
44
|
-
if (!StorageService.instance) {
|
|
45
|
-
StorageService.instance = new StorageService();
|
|
46
|
-
StorageService.initialize();
|
|
47
|
-
}
|
|
48
|
-
return StorageService.instance;
|
|
49
|
-
}
|
|
50
|
-
static async initializeCache() {
|
|
51
|
-
if (StorageService.cacheInitialized) return;
|
|
52
|
-
try {
|
|
53
|
-
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)]);
|
|
54
|
-
StorageService.cache = {
|
|
55
|
-
sessionId,
|
|
56
|
-
sessionType: sessionType,
|
|
57
|
-
sessionState: sessionState,
|
|
58
|
-
sessionObject: sessionObject ? JSON.parse(sessionObject) : null,
|
|
59
|
-
floatingButtonPosition: floatingButtonPosition ? JSON.parse(floatingButtonPosition) : null
|
|
60
|
-
};
|
|
61
|
-
StorageService.cacheInitialized = true;
|
|
62
|
-
} catch (error) {
|
|
63
|
-
// Failed to initialize cache - silently continue
|
|
64
|
-
StorageService.cacheInitialized = true; // Mark as initialized to prevent retries
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
saveSessionId(sessionId) {
|
|
68
|
-
try {
|
|
69
|
-
StorageService.cache.sessionId = sessionId;
|
|
70
|
-
AsyncStorage.setItem(StorageService.SESSION_ID_KEY, sessionId).catch(_error => {
|
|
71
|
-
// Failed to persist session ID - silently continue
|
|
72
|
-
});
|
|
73
|
-
} catch (error) {
|
|
74
|
-
// Failed to save session ID - silently continue
|
|
75
|
-
throw error;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
getSessionId() {
|
|
79
|
-
return StorageService.cache.sessionId;
|
|
80
|
-
}
|
|
81
|
-
saveSessionType(sessionType) {
|
|
82
|
-
try {
|
|
83
|
-
StorageService.cache.sessionType = sessionType;
|
|
84
|
-
AsyncStorage.setItem(StorageService.SESSION_TYPE_KEY, sessionType).catch(_error => {
|
|
85
|
-
// Failed to persist session type - silently continue
|
|
86
|
-
});
|
|
87
|
-
} catch (error) {
|
|
88
|
-
// Failed to save session type - silently continue
|
|
89
|
-
throw error;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
getSessionType() {
|
|
93
|
-
return StorageService.cache.sessionType;
|
|
94
|
-
}
|
|
95
|
-
saveSessionState(state) {
|
|
96
|
-
try {
|
|
97
|
-
StorageService.cache.sessionState = state;
|
|
98
|
-
AsyncStorage.setItem(StorageService.SESSION_STATE_KEY, state).catch(_error => {
|
|
99
|
-
// Failed to persist session state - silently continue
|
|
100
|
-
});
|
|
101
|
-
} catch (error) {
|
|
102
|
-
// Failed to save session state - silently continue
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
getSessionState() {
|
|
107
|
-
return StorageService.cache.sessionState;
|
|
108
|
-
}
|
|
109
|
-
saveSessionObject(session) {
|
|
110
|
-
try {
|
|
111
|
-
StorageService.cache.sessionObject = session;
|
|
112
|
-
AsyncStorage.setItem(StorageService.SESSION_OBJECT_KEY, JSON.stringify(session)).catch(_error => {
|
|
113
|
-
// Failed to persist session object - silently continue
|
|
114
|
-
});
|
|
115
|
-
} catch (error) {
|
|
116
|
-
// Failed to save session object - silently continue
|
|
117
|
-
throw error;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
getSessionObject() {
|
|
121
|
-
return StorageService.cache.sessionObject;
|
|
122
|
-
}
|
|
123
|
-
clearSessionData() {
|
|
124
|
-
try {
|
|
125
|
-
// Clear cache immediately
|
|
126
|
-
StorageService.cache = {
|
|
127
|
-
...StorageService.cache,
|
|
128
|
-
sessionId: null,
|
|
129
|
-
sessionType: null,
|
|
130
|
-
sessionState: null,
|
|
131
|
-
sessionObject: null
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
// Clear persistent storage asynchronously
|
|
135
|
-
AsyncStorage.multiRemove([StorageService.SESSION_ID_KEY, StorageService.SESSION_TYPE_KEY, StorageService.SESSION_STATE_KEY, StorageService.SESSION_OBJECT_KEY]).catch(_error => {
|
|
136
|
-
// Failed to clear session data from storage - silently continue
|
|
137
|
-
});
|
|
138
|
-
} catch (error) {
|
|
139
|
-
// Failed to clear session data - silently continue
|
|
140
|
-
throw error;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
getAllSessionData() {
|
|
144
|
-
return {
|
|
145
|
-
sessionId: StorageService.cache.sessionId,
|
|
146
|
-
sessionType: StorageService.cache.sessionType,
|
|
147
|
-
sessionState: StorageService.cache.sessionState,
|
|
148
|
-
sessionObject: StorageService.cache.sessionObject
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
saveFloatingButtonPosition(position) {
|
|
152
|
-
try {
|
|
153
|
-
StorageService.cache.floatingButtonPosition = position;
|
|
154
|
-
|
|
155
|
-
// Debounce AsyncStorage writes to avoid excessive I/O
|
|
156
|
-
if (StorageService.positionSaveTimeout) {
|
|
157
|
-
clearTimeout(StorageService.positionSaveTimeout);
|
|
158
|
-
}
|
|
159
|
-
StorageService.positionSaveTimeout = setTimeout(() => {
|
|
160
|
-
AsyncStorage.setItem(StorageService.FLOATING_BUTTON_POSITION_KEY, JSON.stringify(position)).catch(error => {
|
|
161
|
-
logger.error('StorageService', 'Failed to persist floating button position', error);
|
|
162
|
-
});
|
|
163
|
-
}, 100); // 100ms debounce
|
|
164
|
-
} catch (error) {
|
|
165
|
-
logger.error('StorageService', 'Failed to save floating button position', error);
|
|
166
|
-
throw error;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
getFloatingButtonPosition() {
|
|
170
|
-
return StorageService.cache.floatingButtonPosition;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Initialize cache on first use - call this method when the service is first used
|
|
174
|
-
static async initialize() {
|
|
175
|
-
await StorageService.initializeCache();
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
//# sourceMappingURL=storage.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|