@multiplayer-app/session-recorder-react-native 1.3.36 → 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 +13 -8
- 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/native/SessionRecorderNative.ts +22 -13
- package/src/otel/helpers.ts +5 -1
- package/src/otel/index.ts +1 -1
- package/src/otel/instrumentations/index.ts +22 -22
- package/src/patch/configs.ts +15 -10
- package/src/patch/fetch.ts +98 -89
- package/src/patch/index.ts +1 -1
- package/src/patch/xhr.ts +3 -4
- package/src/services/screenRecordingService.ts +7 -2
- package/src/services/storage.service.ts +4 -1
- 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 -224
- 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,166 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
export class ApiService {
|
|
4
|
-
baseUrl = 'https://api.multiplayer.app';
|
|
5
|
-
constructor() {
|
|
6
|
-
this.config = {
|
|
7
|
-
apiKey: '',
|
|
8
|
-
apiBaseUrl: '',
|
|
9
|
-
exporterEndpoint: ''
|
|
10
|
-
};
|
|
11
|
-
}
|
|
12
|
-
init(config) {
|
|
13
|
-
this.config = {
|
|
14
|
-
...this.config,
|
|
15
|
-
...config
|
|
16
|
-
};
|
|
17
|
-
if (config.apiBaseUrl) {
|
|
18
|
-
this.baseUrl = config.apiBaseUrl;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Update the API service configuration
|
|
24
|
-
* @param config - Partial configuration to update
|
|
25
|
-
*/
|
|
26
|
-
updateConfigs(config) {
|
|
27
|
-
if (this.config) {
|
|
28
|
-
this.config = {
|
|
29
|
-
...this.config,
|
|
30
|
-
...config
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Set the API key
|
|
37
|
-
* @param apiKey - The API key to set
|
|
38
|
-
*/
|
|
39
|
-
setApiKey(apiKey) {
|
|
40
|
-
if (this.config) {
|
|
41
|
-
this.config.apiKey = apiKey;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Create a new error span session
|
|
47
|
-
* @param request - Session create error span request data
|
|
48
|
-
* @param signal - Optional AbortSignal for request cancellation
|
|
49
|
-
*/
|
|
50
|
-
createErrorSession(request, signal) {
|
|
51
|
-
return this.makeRequest('/debug-sessions/error-span/start', 'POST', request, signal);
|
|
52
|
-
}
|
|
53
|
-
updateSessionAttributes(sessionId, requestBody, signal) {
|
|
54
|
-
return this.makeRequest(`/debug-sessions/${sessionId}`, 'PATCH', requestBody, signal);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Export events to the session debugger API
|
|
59
|
-
* @param sessionId - ID of the session to export events
|
|
60
|
-
* @param requestBody - Request body containing events
|
|
61
|
-
* @param signal - Optional AbortSignal for request cancellation
|
|
62
|
-
*/
|
|
63
|
-
exportEvents(sessionId, requestBody, signal) {
|
|
64
|
-
return this.makeRequest(`/debug-sessions/${sessionId}/rrweb-events`, 'POST', requestBody, signal);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Start a new debug session
|
|
69
|
-
* @param request - Session start request data
|
|
70
|
-
* @param signal - Optional AbortSignal for request cancellation
|
|
71
|
-
*/
|
|
72
|
-
startSession(request, signal) {
|
|
73
|
-
return this.makeRequest('/debug-sessions/start', 'POST', request, signal);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Stop an active debug session
|
|
78
|
-
* @param sessionId - ID of the session to stop
|
|
79
|
-
* @param request - Session stop request data
|
|
80
|
-
*/
|
|
81
|
-
stopSession(sessionId, request) {
|
|
82
|
-
return this.makeRequest(`/debug-sessions/${sessionId}/stop`, 'PATCH', request);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Cancel an active debug session
|
|
87
|
-
* @param sessionId - ID of the session to cancel
|
|
88
|
-
*/
|
|
89
|
-
cancelSession(sessionId) {
|
|
90
|
-
return this.makeRequest(`/debug-sessions/${sessionId}/cancel`, 'DELETE');
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Start a new continuous debug session
|
|
95
|
-
* @param request - Session start request data
|
|
96
|
-
* @param signal - Optional AbortSignal for request cancellation
|
|
97
|
-
*/
|
|
98
|
-
startContinuousDebugSession(request, signal) {
|
|
99
|
-
return this.makeRequest('/continuous-debug-sessions/start', 'POST', request, signal);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Save a continuous debug session
|
|
104
|
-
* @param sessionId - ID of the session to save
|
|
105
|
-
* @param request - Session save request data
|
|
106
|
-
* @param signal - Optional AbortSignal for request cancellation
|
|
107
|
-
*/
|
|
108
|
-
saveContinuousDebugSession(sessionId, request, signal) {
|
|
109
|
-
return this.makeRequest(`/continuous-debug-sessions/${sessionId}/save`, 'POST', request, signal);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Stop an active continuous debug session
|
|
114
|
-
* @param sessionId - ID of the session to stop
|
|
115
|
-
*/
|
|
116
|
-
stopContinuousDebugSession(sessionId) {
|
|
117
|
-
return this.makeRequest(`/continuous-debug-sessions/${sessionId}/cancel`, 'DELETE');
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Check debug session should be started remotely
|
|
122
|
-
*/
|
|
123
|
-
checkRemoteSession(requestBody, signal) {
|
|
124
|
-
return this.makeRequest('/remote-debug-session/check', 'POST', requestBody, signal);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Make a request to the session debugger API
|
|
129
|
-
* @param path - API endpoint path (relative to the base URL)
|
|
130
|
-
* @param method - HTTP method (GET, POST, PATCH, etc.)
|
|
131
|
-
* @param body - request payload
|
|
132
|
-
* @param signal - AbortSignal to set request's signal
|
|
133
|
-
*/
|
|
134
|
-
async makeRequest(path, method, body, signal) {
|
|
135
|
-
const url = `${this.baseUrl}/v0/radar${path}`;
|
|
136
|
-
const params = {
|
|
137
|
-
method,
|
|
138
|
-
body: body ? JSON.stringify(body) : null,
|
|
139
|
-
headers: {
|
|
140
|
-
'Content-Type': 'application/json',
|
|
141
|
-
...(this.config?.apiKey && {
|
|
142
|
-
'X-Api-Key': this.config.apiKey
|
|
143
|
-
})
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
try {
|
|
147
|
-
const response = await fetch(url, {
|
|
148
|
-
...params,
|
|
149
|
-
signal
|
|
150
|
-
});
|
|
151
|
-
if (!response.ok) {
|
|
152
|
-
throw new Error('Network response was not ok: ' + response.statusText);
|
|
153
|
-
}
|
|
154
|
-
if (response.status === 204) {
|
|
155
|
-
return null;
|
|
156
|
-
}
|
|
157
|
-
return await response.json();
|
|
158
|
-
} catch (error) {
|
|
159
|
-
if (error?.name === 'AbortError') {
|
|
160
|
-
throw new Error('Request aborted');
|
|
161
|
-
}
|
|
162
|
-
throw new Error('Error making request: ' + error.message);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
//# sourceMappingURL=api.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["ApiService","baseUrl","constructor","config","apiKey","apiBaseUrl","exporterEndpoint","init","updateConfigs","setApiKey","createErrorSession","request","signal","makeRequest","updateSessionAttributes","sessionId","requestBody","exportEvents","startSession","stopSession","cancelSession","startContinuousDebugSession","saveContinuousDebugSession","stopContinuousDebugSession","checkRemoteSession","path","method","body","url","params","JSON","stringify","headers","response","fetch","ok","Error","statusText","status","json","error","name","message"],"sourceRoot":"../../../src","sources":["services/api.service.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,280 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { Platform } from 'react-native';
|
|
4
|
-
import { EventType } from '@rrweb/types';
|
|
5
|
-
import { SpanStatusCode } from '@opentelemetry/api';
|
|
6
|
-
|
|
7
|
-
// Safe import for AsyncStorage with web fallback
|
|
8
|
-
let AsyncStorage = null;
|
|
9
|
-
const isWeb = Platform.OS === 'web';
|
|
10
|
-
if (!isWeb) {
|
|
11
|
-
try {
|
|
12
|
-
AsyncStorage = require('@react-native-async-storage/async-storage').default;
|
|
13
|
-
} catch (_error) {
|
|
14
|
-
AsyncStorage = null;
|
|
15
|
-
}
|
|
16
|
-
} else {
|
|
17
|
-
AsyncStorage = {
|
|
18
|
-
getItem: _key => Promise.resolve(null),
|
|
19
|
-
setItem: (_key, _value) => Promise.resolve(undefined),
|
|
20
|
-
removeItem: _key => Promise.resolve(undefined),
|
|
21
|
-
multiRemove: _keys => Promise.resolve(undefined),
|
|
22
|
-
multiGet: _keys => Promise.resolve([]),
|
|
23
|
-
multiSet: _pairs => Promise.resolve(undefined)
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
const INDEX_KEY = 'mp_crash_buffer_index_v1';
|
|
27
|
-
const ATTRS_KEY = 'mp_crash_buffer_attrs_v1';
|
|
28
|
-
const RECORD_PREFIX = 'mp_crash_buffer_rec_v1:';
|
|
29
|
-
const randomId = () => `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
|
|
30
|
-
export class CrashBufferService {
|
|
31
|
-
static instance = null;
|
|
32
|
-
index = [];
|
|
33
|
-
indexLoaded = false;
|
|
34
|
-
lastPruneAt = 0;
|
|
35
|
-
opChain = Promise.resolve();
|
|
36
|
-
defaultWindowMs = 0.5 * 60 * 1000;
|
|
37
|
-
lastSeenEventTs = 0;
|
|
38
|
-
listeners = new Map();
|
|
39
|
-
static getInstance() {
|
|
40
|
-
if (!CrashBufferService.instance) {
|
|
41
|
-
CrashBufferService.instance = new CrashBufferService();
|
|
42
|
-
}
|
|
43
|
-
return CrashBufferService.instance;
|
|
44
|
-
}
|
|
45
|
-
enqueue(fn) {
|
|
46
|
-
const next = this.opChain.then(fn, fn);
|
|
47
|
-
// Preserve chain, but don't leak rejections.
|
|
48
|
-
this.opChain = next.then(() => undefined, () => undefined);
|
|
49
|
-
return next;
|
|
50
|
-
}
|
|
51
|
-
async ensureIndexLoaded() {
|
|
52
|
-
if (this.indexLoaded) return;
|
|
53
|
-
if (!AsyncStorage) {
|
|
54
|
-
this.indexLoaded = true;
|
|
55
|
-
this.index = [];
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
try {
|
|
59
|
-
const raw = await AsyncStorage.getItem(INDEX_KEY);
|
|
60
|
-
this.index = raw ? JSON.parse(raw) : [];
|
|
61
|
-
} catch (_e) {
|
|
62
|
-
this.index = [];
|
|
63
|
-
} finally {
|
|
64
|
-
this.indexLoaded = true;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
async setAttrs(attrs) {
|
|
68
|
-
return this.enqueue(async () => {
|
|
69
|
-
if (!AsyncStorage) return;
|
|
70
|
-
try {
|
|
71
|
-
await AsyncStorage.setItem(ATTRS_KEY, JSON.stringify(attrs || null));
|
|
72
|
-
} catch (_e) {
|
|
73
|
-
// best-effort
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
async appendEvent(payload, windowMs) {
|
|
78
|
-
const ts = payload?.ts ?? Date.now();
|
|
79
|
-
this.lastSeenEventTs = Math.max(this.lastSeenEventTs, ts);
|
|
80
|
-
const rawEventType = payload?.event?.eventType ?? payload?.event?.type;
|
|
81
|
-
const isFullSnapshot = Boolean(payload.isFullSnapshot) || rawEventType === EventType.FullSnapshot;
|
|
82
|
-
const record = {
|
|
83
|
-
...payload,
|
|
84
|
-
ts,
|
|
85
|
-
isFullSnapshot
|
|
86
|
-
};
|
|
87
|
-
return this.appendRecord('rrweb', record.ts, record, windowMs ?? this.defaultWindowMs);
|
|
88
|
-
}
|
|
89
|
-
async appendSpans(payload, windowMs) {
|
|
90
|
-
if (!payload.length) return;
|
|
91
|
-
const effectiveWindowMs = windowMs ?? this.defaultWindowMs;
|
|
92
|
-
return this.enqueue(async () => {
|
|
93
|
-
if (!AsyncStorage) return;
|
|
94
|
-
await this.ensureIndexLoaded();
|
|
95
|
-
const pairs = [];
|
|
96
|
-
let errorEvent = null;
|
|
97
|
-
for (const p of payload) {
|
|
98
|
-
const id = randomId();
|
|
99
|
-
const key = `${RECORD_PREFIX}${id}`;
|
|
100
|
-
const entry = {
|
|
101
|
-
id,
|
|
102
|
-
ts: p.ts,
|
|
103
|
-
kind: 'span'
|
|
104
|
-
};
|
|
105
|
-
this.index.push(entry);
|
|
106
|
-
pairs.push([key, JSON.stringify(p)]);
|
|
107
|
-
if (!errorEvent && p?.span?.status?.code === SpanStatusCode.ERROR) {
|
|
108
|
-
errorEvent = {
|
|
109
|
-
ts: p.ts,
|
|
110
|
-
span: p.span
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
try {
|
|
115
|
-
await AsyncStorage.multiSet(pairs);
|
|
116
|
-
await AsyncStorage.setItem(INDEX_KEY, JSON.stringify(this.index));
|
|
117
|
-
} catch (_e) {
|
|
118
|
-
// best-effort
|
|
119
|
-
}
|
|
120
|
-
this.pruneSoon(effectiveWindowMs);
|
|
121
|
-
if (errorEvent) {
|
|
122
|
-
this._emit('error-span-appended', errorEvent);
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
setDefaultWindowMs(windowMs) {
|
|
127
|
-
this.defaultWindowMs = Math.max(10_000, windowMs || 0.5 * 60 * 1000);
|
|
128
|
-
}
|
|
129
|
-
on(event, listener) {
|
|
130
|
-
const set = this.listeners.get(event) || new Set();
|
|
131
|
-
set.add(listener);
|
|
132
|
-
this.listeners.set(event, set);
|
|
133
|
-
return () => this.off(event, listener);
|
|
134
|
-
}
|
|
135
|
-
off(event, listener) {
|
|
136
|
-
const set = this.listeners.get(event);
|
|
137
|
-
if (!set) return;
|
|
138
|
-
set.delete(listener);
|
|
139
|
-
if (set.size === 0) this.listeners.delete(event);
|
|
140
|
-
}
|
|
141
|
-
_emit(event, payload) {
|
|
142
|
-
const set = this.listeners.get(event);
|
|
143
|
-
if (!set || set.size === 0) return;
|
|
144
|
-
for (const fn of Array.from(set)) {
|
|
145
|
-
try {
|
|
146
|
-
fn(payload);
|
|
147
|
-
} catch (_e) {
|
|
148
|
-
// never throw into app code
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
async appendRecord(kind, ts, payload, windowMs) {
|
|
153
|
-
return this.enqueue(async () => {
|
|
154
|
-
if (!AsyncStorage) return;
|
|
155
|
-
await this.ensureIndexLoaded();
|
|
156
|
-
const id = randomId();
|
|
157
|
-
const key = `${RECORD_PREFIX}${id}`;
|
|
158
|
-
const entry = {
|
|
159
|
-
id,
|
|
160
|
-
ts,
|
|
161
|
-
kind
|
|
162
|
-
};
|
|
163
|
-
this.index.push(entry);
|
|
164
|
-
try {
|
|
165
|
-
await AsyncStorage.setItem(key, JSON.stringify(payload));
|
|
166
|
-
await AsyncStorage.setItem(INDEX_KEY, JSON.stringify(this.index));
|
|
167
|
-
} catch (_e) {
|
|
168
|
-
// best-effort
|
|
169
|
-
}
|
|
170
|
-
this.pruneSoon(windowMs);
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
pruneSoon(windowMs) {
|
|
174
|
-
const now = Date.now();
|
|
175
|
-
if (now - this.lastPruneAt < 2000) return;
|
|
176
|
-
this.lastPruneAt = now;
|
|
177
|
-
const cutoff = Math.max(0, now - windowMs);
|
|
178
|
-
void this.pruneOlderThan(cutoff);
|
|
179
|
-
}
|
|
180
|
-
async pruneOlderThan(cutoffTs) {
|
|
181
|
-
return this.enqueue(async () => {
|
|
182
|
-
if (!AsyncStorage) return;
|
|
183
|
-
await this.ensureIndexLoaded();
|
|
184
|
-
const toRemove = this.index.filter(e => e.ts < cutoffTs);
|
|
185
|
-
if (toRemove.length === 0) return;
|
|
186
|
-
const removeKeys = toRemove.map(e => `${RECORD_PREFIX}${e.id}`);
|
|
187
|
-
this.index = this.index.filter(e => e.ts >= cutoffTs);
|
|
188
|
-
try {
|
|
189
|
-
await AsyncStorage.multiRemove(removeKeys);
|
|
190
|
-
await AsyncStorage.setItem(INDEX_KEY, JSON.stringify(this.index));
|
|
191
|
-
} catch (_e) {
|
|
192
|
-
// best-effort
|
|
193
|
-
}
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
async snapshot(windowMs, now = Date.now()) {
|
|
197
|
-
return this.enqueue(async () => {
|
|
198
|
-
await this.ensureIndexLoaded();
|
|
199
|
-
const effectiveWindowMs = windowMs ?? this.defaultWindowMs;
|
|
200
|
-
const toTs = now;
|
|
201
|
-
const fromTs = Math.max(0, toTs - effectiveWindowMs);
|
|
202
|
-
const entries = this.index.filter(e => e.ts >= fromTs && e.ts <= toTs);
|
|
203
|
-
const keys = entries.map(e => `${RECORD_PREFIX}${e.id}`);
|
|
204
|
-
let pairs = [];
|
|
205
|
-
try {
|
|
206
|
-
pairs = AsyncStorage ? await AsyncStorage.multiGet(keys) : [];
|
|
207
|
-
} catch (_e) {
|
|
208
|
-
pairs = [];
|
|
209
|
-
}
|
|
210
|
-
const byKey = new Map();
|
|
211
|
-
for (const [k, v] of pairs) {
|
|
212
|
-
if (!v) continue;
|
|
213
|
-
try {
|
|
214
|
-
byKey.set(k, JSON.parse(v));
|
|
215
|
-
} catch (_e) {
|
|
216
|
-
// ignore
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
const allEvents = [];
|
|
220
|
-
const allSpans = [];
|
|
221
|
-
for (const e of entries.sort((a, b) => a.ts - b.ts)) {
|
|
222
|
-
const key = `${RECORD_PREFIX}${e.id}`;
|
|
223
|
-
const payload = byKey.get(key);
|
|
224
|
-
if (!payload) continue;
|
|
225
|
-
if (e.kind === 'rrweb') allEvents.push(payload);
|
|
226
|
-
if (e.kind === 'span') allSpans.push(payload);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Mirror browser semantics:
|
|
230
|
-
// - Ensure the rrweb stream starts at Meta -> FullSnapshot (or is empty).
|
|
231
|
-
// - Only include spans from the replayable window onward.
|
|
232
|
-
const eventsSorted = allEvents.slice().sort((a, b) => a.ts - b.ts);
|
|
233
|
-
const firstSnapshotIdx = eventsSorted.findIndex(e => {
|
|
234
|
-
const t = e?.event?.eventType ?? e?.event?.type;
|
|
235
|
-
return t === EventType.FullSnapshot;
|
|
236
|
-
});
|
|
237
|
-
if (firstSnapshotIdx < 0) {
|
|
238
|
-
return {
|
|
239
|
-
events: [],
|
|
240
|
-
spans: [],
|
|
241
|
-
startedAt: fromTs,
|
|
242
|
-
stoppedAt: toTs
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
let startIdx = firstSnapshotIdx;
|
|
246
|
-
for (let i = firstSnapshotIdx - 1; i >= 0; i--) {
|
|
247
|
-
const t = eventsSorted[i]?.event?.eventType ?? eventsSorted[i]?.event?.type;
|
|
248
|
-
if (t === EventType.Meta) {
|
|
249
|
-
startIdx = i;
|
|
250
|
-
break;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
const rrwebEvents = eventsSorted.slice(startIdx);
|
|
254
|
-
const firstEvent = rrwebEvents[0];
|
|
255
|
-
const replayStartedAt = typeof firstEvent?.ts === 'number' ? firstEvent.ts : fromTs;
|
|
256
|
-
const otelSpans = allSpans.filter(s => typeof s?.ts === 'number' && s.ts >= replayStartedAt).sort((a, b) => a.ts - b.ts);
|
|
257
|
-
return {
|
|
258
|
-
spans: otelSpans,
|
|
259
|
-
events: rrwebEvents,
|
|
260
|
-
stoppedAt: toTs,
|
|
261
|
-
startedAt: replayStartedAt
|
|
262
|
-
};
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
async clear() {
|
|
266
|
-
return this.enqueue(async () => {
|
|
267
|
-
if (!AsyncStorage) return;
|
|
268
|
-
await this.ensureIndexLoaded();
|
|
269
|
-
const keys = this.index.map(e => `${RECORD_PREFIX}${e.id}`);
|
|
270
|
-
this.index = [];
|
|
271
|
-
this.lastSeenEventTs = 0;
|
|
272
|
-
try {
|
|
273
|
-
await AsyncStorage.multiRemove([INDEX_KEY, ATTRS_KEY, ...keys]);
|
|
274
|
-
} catch (_e) {
|
|
275
|
-
// best-effort
|
|
276
|
-
}
|
|
277
|
-
});
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
//# sourceMappingURL=crashBuffer.service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","EventType","SpanStatusCode","AsyncStorage","isWeb","OS","require","default","_error","getItem","_key","Promise","resolve","setItem","_value","undefined","removeItem","multiRemove","_keys","multiGet","multiSet","_pairs","INDEX_KEY","ATTRS_KEY","RECORD_PREFIX","randomId","Date","now","toString","Math","random","slice","CrashBufferService","instance","index","indexLoaded","lastPruneAt","opChain","defaultWindowMs","lastSeenEventTs","listeners","Map","getInstance","enqueue","fn","next","then","ensureIndexLoaded","raw","JSON","parse","_e","setAttrs","attrs","stringify","appendEvent","payload","windowMs","ts","max","rawEventType","event","eventType","type","isFullSnapshot","Boolean","FullSnapshot","record","appendRecord","appendSpans","length","effectiveWindowMs","pairs","errorEvent","p","id","key","entry","kind","push","span","status","code","ERROR","pruneSoon","_emit","setDefaultWindowMs","on","listener","set","get","Set","add","off","delete","size","Array","from","cutoff","pruneOlderThan","cutoffTs","toRemove","filter","e","removeKeys","map","snapshot","toTs","fromTs","entries","keys","byKey","k","v","allEvents","allSpans","sort","a","b","eventsSorted","firstSnapshotIdx","findIndex","t","events","spans","startedAt","stoppedAt","startIdx","i","Meta","rrwebEvents","firstEvent","replayStartedAt","otelSpans","s","clear"],"sourceRoot":"../../../src","sources":["services/crashBuffer.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
|
-
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
|
|
@@ -1 +0,0 @@
|
|
|
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":[]}
|