@multiplayer-app/session-recorder-react-native 0.0.1-beta.2 → 0.0.1-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +170 -12
- package/SessionRecorderNative.podspec +26 -0
- package/android/build.gradle +34 -0
- package/copy-react-native-dist.sh +34 -16
- package/dist/components/GestureCaptureWrapper/GestureCaptureWrapper.d.ts +1 -0
- package/dist/components/GestureCaptureWrapper/GestureCaptureWrapper.js +1 -1
- package/dist/components/GestureCaptureWrapper/GestureCaptureWrapper.js.map +1 -1
- package/dist/components/MaskableComponent.d.ts +22 -0
- package/dist/components/MaskableComponent.js +1 -0
- package/dist/components/MaskableComponent.js.map +1 -0
- package/dist/components/MaskableTextInput.d.ts +14 -0
- package/dist/components/MaskableTextInput.js +1 -0
- package/dist/components/MaskableTextInput.js.map +1 -0
- package/dist/components/ScreenRecorderView/ScreenRecorderView.js +1 -1
- package/dist/components/ScreenRecorderView/ScreenRecorderView.js.map +1 -1
- package/dist/components/SessionRecorderWidget/FinalPopover.d.ts +11 -0
- package/dist/components/SessionRecorderWidget/FinalPopover.js +1 -0
- package/dist/components/SessionRecorderWidget/FinalPopover.js.map +1 -0
- package/dist/components/SessionRecorderWidget/FloatingButton.d.ts +8 -0
- package/dist/components/SessionRecorderWidget/FloatingButton.js +1 -0
- package/dist/components/SessionRecorderWidget/FloatingButton.js.map +1 -0
- package/dist/components/SessionRecorderWidget/InitialPopover.d.ts +15 -0
- package/dist/components/SessionRecorderWidget/InitialPopover.js +1 -0
- package/dist/components/SessionRecorderWidget/InitialPopover.js.map +1 -0
- package/dist/components/SessionRecorderWidget/ModalContainer.d.ts +8 -0
- package/dist/components/SessionRecorderWidget/ModalContainer.js +1 -0
- package/dist/components/SessionRecorderWidget/ModalContainer.js.map +1 -0
- package/dist/components/SessionRecorderWidget/ModalHeader.d.ts +6 -0
- package/dist/components/SessionRecorderWidget/ModalHeader.js +1 -0
- package/dist/components/SessionRecorderWidget/ModalHeader.js.map +1 -0
- package/dist/components/SessionRecorderWidget/SessionRecorderWidget.d.ts +5 -0
- package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js +1 -0
- package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js.map +1 -0
- package/dist/components/SessionRecorderWidget/icons.d.ts +11 -0
- package/dist/components/SessionRecorderWidget/icons.js +1 -0
- package/dist/components/SessionRecorderWidget/icons.js.map +1 -0
- package/dist/components/SessionRecorderWidget/index.d.ts +2 -0
- package/dist/components/SessionRecorderWidget/index.js +1 -0
- package/dist/components/SessionRecorderWidget/index.js.map +1 -0
- package/dist/components/SessionRecorderWidget/styles.d.ts +165 -0
- package/dist/components/SessionRecorderWidget/styles.js +1 -0
- package/dist/components/SessionRecorderWidget/styles.js.map +1 -0
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/config/defaults.d.ts +4 -4
- package/dist/config/defaults.js +1 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/masking.d.ts +2 -2
- package/dist/config/masking.js +1 -1
- package/dist/config/masking.js.map +1 -1
- package/dist/config/session-recorder.js +1 -1
- package/dist/config/session-recorder.js.map +1 -1
- package/dist/config/validators.d.ts +1 -1
- package/dist/config/validators.js +1 -1
- package/dist/config/validators.js.map +1 -1
- package/dist/config/widget.d.ts +9 -0
- package/dist/config/widget.js +1 -0
- package/dist/config/widget.js.map +1 -0
- package/dist/context/SessionRecorderContext.d.ts +12 -3
- package/dist/context/SessionRecorderContext.js +1 -1
- package/dist/context/SessionRecorderContext.js.map +1 -1
- package/dist/context/SessionRecorderStore.d.ts +10 -0
- package/dist/context/SessionRecorderStore.js +1 -0
- package/dist/context/SessionRecorderStore.js.map +1 -0
- package/dist/context/useSessionRecorderStore.d.ts +8 -0
- package/dist/context/useSessionRecorderStore.js +1 -0
- package/dist/context/useSessionRecorderStore.js.map +1 -0
- package/dist/context/useStoreSelector.d.ts +4 -0
- package/dist/context/useStoreSelector.js +1 -0
- package/dist/context/useStoreSelector.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/native/GestureRecorderNative.d.ts +57 -0
- package/dist/native/GestureRecorderNative.js +1 -0
- package/dist/native/GestureRecorderNative.js.map +1 -0
- package/dist/native/ScreenMasking.d.ts +21 -0
- package/dist/native/ScreenMasking.js +1 -0
- package/dist/native/ScreenMasking.js.map +1 -0
- package/dist/native/SessionRecorderNative.d.ts +33 -0
- package/dist/native/SessionRecorderNative.js +1 -0
- package/dist/native/SessionRecorderNative.js.map +1 -0
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.js +1 -0
- package/dist/native/index.js.map +1 -0
- package/dist/otel/index.js +1 -1
- package/dist/otel/index.js.map +1 -1
- package/dist/patch/xhr.js +1 -1
- package/dist/patch/xhr.js.map +1 -1
- package/dist/recorder/eventExporter.d.ts +4 -1
- package/dist/recorder/eventExporter.js +1 -1
- package/dist/recorder/eventExporter.js.map +1 -1
- package/dist/recorder/gestureRecorder.d.ts +28 -62
- package/dist/recorder/gestureRecorder.js +1 -1
- package/dist/recorder/gestureRecorder.js.map +1 -1
- package/dist/recorder/index.d.ts +2 -0
- package/dist/recorder/index.js +1 -1
- package/dist/recorder/index.js.map +1 -1
- package/dist/recorder/navigationTracker.d.ts +4 -19
- package/dist/recorder/navigationTracker.js +1 -1
- package/dist/recorder/navigationTracker.js.map +1 -1
- package/dist/recorder/screenRecorder.d.ts +11 -5
- package/dist/recorder/screenRecorder.js +1 -1
- package/dist/recorder/screenRecorder.js.map +1 -1
- package/dist/recorder/screenshotManager.d.ts +10 -0
- package/dist/recorder/screenshotManager.js +1 -0
- package/dist/recorder/screenshotManager.js.map +1 -0
- package/dist/services/api.service.d.ts +12 -3
- package/dist/services/api.service.js +1 -1
- package/dist/services/api.service.js.map +1 -1
- package/dist/services/screenMaskingService.d.ts +47 -0
- package/dist/services/screenMaskingService.js +1 -0
- package/dist/services/screenMaskingService.js.map +1 -0
- package/dist/services/storage.service.d.ts +18 -2
- package/dist/services/storage.service.js +1 -1
- package/dist/services/storage.service.js.map +1 -1
- package/dist/session-recorder.d.ts +10 -34
- package/dist/session-recorder.js +1 -1
- package/dist/session-recorder.js.map +1 -1
- package/dist/types/configs.d.ts +85 -0
- package/dist/types/configs.js +1 -0
- package/dist/types/configs.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/session-recorder.d.ts +96 -132
- package/dist/types/session-recorder.js +1 -1
- package/dist/types/session-recorder.js.map +1 -1
- package/dist/utils/componentRegistry.d.ts +64 -0
- package/dist/utils/componentRegistry.js +1 -0
- package/dist/utils/componentRegistry.js.map +1 -0
- package/dist/utils/constants.optional.d.ts +21 -0
- package/dist/utils/constants.optional.expo.d.ts +3 -0
- package/dist/utils/constants.optional.expo.js +1 -0
- package/dist/utils/constants.optional.expo.js.map +1 -0
- package/dist/utils/constants.optional.js +1 -0
- package/dist/utils/constants.optional.js.map +1 -0
- package/dist/utils/createStore.d.ts +8 -0
- package/dist/utils/createStore.js +1 -0
- package/dist/utils/createStore.js.map +1 -0
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.js +1 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/nativeModuleTest.d.ts +8 -0
- package/dist/utils/nativeModuleTest.js +1 -0
- package/dist/utils/nativeModuleTest.js.map +1 -0
- package/dist/utils/platform.d.ts +11 -0
- package/dist/utils/platform.js +1 -1
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/reactNativeHierarchyExtractor.d.ts +38 -0
- package/dist/utils/reactNativeHierarchyExtractor.js +1 -0
- package/dist/utils/reactNativeHierarchyExtractor.js.map +1 -0
- package/dist/utils/rrweb-events.d.ts +4 -3
- package/dist/utils/rrweb-events.js +1 -1
- package/dist/utils/rrweb-events.js.map +1 -1
- package/dist/utils/screenshotMasker.d.ts +96 -0
- package/dist/utils/screenshotMasker.js +1 -0
- package/dist/utils/screenshotMasker.js.map +1 -0
- package/dist/utils/session.d.ts +2 -1
- package/dist/utils/session.js +1 -1
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/shallowEqual.d.ts +1 -0
- package/dist/utils/shallowEqual.js +1 -0
- package/dist/utils/shallowEqual.js.map +1 -0
- package/dist/utils/viewHierarchyTracker.d.ts +89 -0
- package/dist/utils/viewHierarchyTracker.js +1 -0
- package/dist/utils/viewHierarchyTracker.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/ios/GestureRecorderNative.m +21 -0
- package/ios/GestureRecorderNative.swift +316 -0
- package/ios/SessionRecorderNative.m +17 -0
- package/ios/SessionRecorderNative.podspec +26 -0
- package/ios/SessionRecorderNative.swift +599 -0
- package/package.json +14 -12
- package/react-native.config.js +12 -0
- package/RRWEB_INTEGRATION.md +0 -336
- package/VIEWSHOT_INTEGRATION_TEST.md +0 -123
- package/babel.config.js +0 -13
- package/dist/components/GestureCaptureWrapper.d.ts +0 -6
- package/dist/components/GestureCaptureWrapper.js +0 -1
- package/dist/components/GestureCaptureWrapper.js.map +0 -1
- package/dist/expo.d.ts +0 -7
- package/dist/expo.js +0 -1
- package/dist/expo.js.map +0 -1
- package/dist/otel/instrumentations/gestureInstrumentation.d.ts +0 -15
- package/dist/otel/instrumentations/gestureInstrumentation.js +0 -1
- package/dist/otel/instrumentations/gestureInstrumentation.js.map +0 -1
- package/dist/otel/instrumentations/reactNativeInstrumentation.d.ts +0 -8
- package/dist/otel/instrumentations/reactNativeInstrumentation.js +0 -1
- package/dist/otel/instrumentations/reactNativeInstrumentation.js.map +0 -1
- package/dist/otel/instrumentations/reactNavigationInstrumentation.d.ts +0 -13
- package/dist/otel/instrumentations/reactNavigationInstrumentation.js +0 -1
- package/dist/otel/instrumentations/reactNavigationInstrumentation.js.map +0 -1
- package/dist/recorder/gestureHandlerRecorder.d.ts +0 -19
- package/dist/recorder/gestureHandlerRecorder.js +0 -1
- package/dist/recorder/gestureHandlerRecorder.js.map +0 -1
- package/dist/types/rrweb.d.ts +0 -118
- package/dist/types/rrweb.js +0 -1
- package/dist/types/rrweb.js.map +0 -1
- package/scripts/generate-app-metadata.js +0 -173
- package/src/components/GestureCaptureWrapper/GestureCaptureWrapper.tsx +0 -86
- package/src/components/GestureCaptureWrapper/index.ts +0 -1
- package/src/components/ScreenRecorderView/ScreenRecorderView.tsx +0 -72
- package/src/components/ScreenRecorderView/index.ts +0 -1
- package/src/components/index.ts +0 -1
- package/src/config/constants.ts +0 -60
- package/src/config/defaults.ts +0 -82
- package/src/config/index.ts +0 -6
- package/src/config/masking.ts +0 -27
- package/src/config/session-recorder.ts +0 -55
- package/src/config/validators.ts +0 -31
- package/src/context/SessionRecorderContext.tsx +0 -75
- package/src/expo.ts +0 -11
- package/src/index.ts +0 -17
- package/src/otel/helpers.ts +0 -275
- package/src/otel/index.ts +0 -138
- package/src/otel/instrumentations/index.ts +0 -115
- package/src/patch/index.ts +0 -1
- package/src/patch/xhr.ts +0 -142
- package/src/recorder/eventExporter.ts +0 -141
- package/src/recorder/gestureRecorder.ts +0 -498
- package/src/recorder/index.ts +0 -179
- package/src/recorder/navigationTracker.ts +0 -449
- package/src/recorder/screenRecorder.ts +0 -498
- package/src/services/api.service.ts +0 -203
- package/src/services/storage.service.ts +0 -158
- package/src/session-recorder.ts +0 -600
- package/src/types/expo.d.ts +0 -23
- package/src/types/index.ts +0 -28
- package/src/types/session-recorder.ts +0 -423
- package/src/types/session.ts +0 -65
- package/src/utils/app-metadata.ts +0 -31
- package/src/utils/index.ts +0 -8
- package/src/utils/logger.ts +0 -225
- package/src/utils/platform.ts +0 -384
- package/src/utils/request-utils.ts +0 -61
- package/src/utils/rrweb-events.ts +0 -309
- package/src/utils/session.ts +0 -18
- package/src/utils/time.ts +0 -17
- package/src/utils/type-utils.ts +0 -75
- package/src/version.ts +0 -1
- package/tsconfig.json +0 -24
|
@@ -1,13 +1,25 @@
|
|
|
1
|
+
import { Span } from '@opentelemetry/api';
|
|
1
2
|
import { SessionType } from '@multiplayer-app/session-recorder-common';
|
|
2
3
|
import { PropagateTraceHeaderCorsUrls } from '@opentelemetry/sdk-trace-web';
|
|
3
|
-
import { Span } from '@opentelemetry/api';
|
|
4
4
|
import type { ISession } from './session';
|
|
5
|
+
export declare enum SessionState {
|
|
6
|
+
started = "2",
|
|
7
|
+
paused = "1",
|
|
8
|
+
stopped = "0"
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Enumeration for widget button placement positions
|
|
12
|
+
*/
|
|
5
13
|
export declare enum WidgetButtonPlacement {
|
|
6
14
|
topLeft = "top-left",
|
|
7
15
|
topRight = "top-right",
|
|
8
16
|
bottomLeft = "bottom-left",
|
|
9
17
|
bottomRight = "bottom-right"
|
|
10
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Main configuration interface for the Session Recorder
|
|
21
|
+
* Contains all configurable options for session recording, tracing, and UI
|
|
22
|
+
*/
|
|
11
23
|
export interface SessionRecorderOptions {
|
|
12
24
|
/**
|
|
13
25
|
* The API key used to authenticate with the session debugger service.
|
|
@@ -40,15 +52,6 @@ export interface SessionRecorderOptions {
|
|
|
40
52
|
* Additionally, URLs that exactly match any string in the array will also be ignored.
|
|
41
53
|
*/
|
|
42
54
|
ignoreUrls?: Array<string | RegExp>;
|
|
43
|
-
/**
|
|
44
|
-
* (Optional) Determines where the record button should be placed on the screen.
|
|
45
|
-
* Possible values:
|
|
46
|
-
* - 'top-left'
|
|
47
|
-
* - 'top-right'
|
|
48
|
-
* - 'bottom-left'
|
|
49
|
-
* - 'bottom-right'
|
|
50
|
-
*/
|
|
51
|
-
widgetButtonPlacement?: WidgetButtonPlacement;
|
|
52
55
|
/**
|
|
53
56
|
* (Optional) Enables the continuous recording feature and UI.
|
|
54
57
|
* If false, the UI toggle is hidden and attempts to start a continuous
|
|
@@ -57,11 +60,26 @@ export interface SessionRecorderOptions {
|
|
|
57
60
|
*/
|
|
58
61
|
showContinuousRecording?: boolean;
|
|
59
62
|
/**
|
|
60
|
-
*
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
* Optional widget configuration
|
|
64
|
+
*/
|
|
65
|
+
widget?: {
|
|
66
|
+
/** Enables/disables the widget entirely
|
|
67
|
+
* @default true
|
|
68
|
+
*/
|
|
69
|
+
enabled?: boolean;
|
|
70
|
+
/** Floating button config
|
|
71
|
+
* @default visible: true, placement: 'bottom-right'
|
|
72
|
+
*/
|
|
73
|
+
button?: {
|
|
74
|
+
visible?: boolean;
|
|
75
|
+
placement?: WidgetButtonPlacement;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* (Optional) Configuration for customizable UI text and labels
|
|
79
|
+
* @default See PopoverTextConfig defaults
|
|
80
|
+
*/
|
|
81
|
+
textOverrides?: TextOverridesOptions;
|
|
82
|
+
};
|
|
65
83
|
/**
|
|
66
84
|
* (Optional) Trace ID Ratio for sampling
|
|
67
85
|
* @default 0.15
|
|
@@ -81,11 +99,6 @@ export interface SessionRecorderOptions {
|
|
|
81
99
|
* @default 100000
|
|
82
100
|
*/
|
|
83
101
|
maxCapturingHttpPayloadSize?: number;
|
|
84
|
-
/**
|
|
85
|
-
* (Optional) If true, uses post message fallback
|
|
86
|
-
* @default false
|
|
87
|
-
*/
|
|
88
|
-
usePostMessageFallback?: boolean;
|
|
89
102
|
/** If true, captures body in traces
|
|
90
103
|
* @default true
|
|
91
104
|
*/
|
|
@@ -98,113 +111,27 @@ export interface SessionRecorderOptions {
|
|
|
98
111
|
* (Optional) Configuration for masking sensitive data in session recordings
|
|
99
112
|
* @default { maskAllInputs: true, isContentMaskingEnabled: true }
|
|
100
113
|
*/
|
|
101
|
-
masking?:
|
|
102
|
-
/**
|
|
103
|
-
* (Optional) Configuration for customizable UI text and labels
|
|
104
|
-
* @default See PopoverTextConfig defaults
|
|
105
|
-
*/
|
|
106
|
-
widgetTextOverrides?: WidgetTextOverridesConfig;
|
|
107
|
-
/** Whether to record gestures */
|
|
108
|
-
recordGestures?: boolean;
|
|
109
|
-
/** Whether to record navigation */
|
|
110
|
-
recordNavigation?: boolean;
|
|
111
|
-
/** Whether to record screen */
|
|
112
|
-
recordScreen?: boolean;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Interface for masking configuration
|
|
116
|
-
*/
|
|
117
|
-
export interface MaskingConfig {
|
|
118
|
-
/** If true, enables masking for debug span payload in traces
|
|
119
|
-
* @default true
|
|
120
|
-
*/
|
|
121
|
-
isContentMaskingEnabled?: boolean;
|
|
122
|
-
/** Custom function for masking body in traces */
|
|
123
|
-
maskBody?: (payload: any, span: Span) => any;
|
|
124
|
-
/** Custom function for masking headers in traces */
|
|
125
|
-
maskHeaders?: (headers: any, span: any) => any;
|
|
126
|
-
/** List of body fields to mask in traces */
|
|
127
|
-
maskBodyFieldsList?: string[];
|
|
128
|
-
/** List of headers to mask in traces */
|
|
129
|
-
maskHeadersList?: string[];
|
|
130
|
-
/** List of headers to include in traces (if specified, only these headers will be captured) */
|
|
131
|
-
headersToInclude?: string[];
|
|
132
|
-
/** List of headers to exclude from traces */
|
|
133
|
-
headersToExclude?: string[];
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Base configuration interface with common properties
|
|
137
|
-
*/
|
|
138
|
-
export interface BaseConfig {
|
|
139
|
-
/** API key for authentication */
|
|
140
|
-
apiKey: string;
|
|
141
|
-
/** Base URL for the API calls */
|
|
142
|
-
apiBaseUrl: string;
|
|
143
|
-
/** Base URL for the API calls */
|
|
144
|
-
exporterEndpoint: string;
|
|
145
|
-
/** Whether to use post message fallback */
|
|
146
|
-
usePostMessageFallback?: boolean;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Configuration interface for the Tracer class
|
|
150
|
-
*/
|
|
151
|
-
export type TracerReactNativeMasking = Pick<MaskingConfig, 'isContentMaskingEnabled' | 'maskBody' | 'maskHeaders' | 'maskBodyFieldsList' | 'maskHeadersList' | 'headersToInclude' | 'headersToExclude'>;
|
|
152
|
-
export interface TracerReactNativeConfig extends BaseConfig {
|
|
153
|
-
/** Application name */
|
|
154
|
-
application: string;
|
|
155
|
-
/** Application version */
|
|
156
|
-
version: string;
|
|
157
|
-
/** Environment (e.g., 'production', 'staging') */
|
|
158
|
-
environment: string;
|
|
159
|
-
/** URLs to ignore during tracing */
|
|
160
|
-
ignoreUrls: Array<string | RegExp>;
|
|
161
|
-
/** Trace ID ratio for sampling */
|
|
162
|
-
sampleTraceRatio: number;
|
|
163
|
-
/** URLs for CORS trace header propagation */
|
|
164
|
-
propagateTraceHeaderCorsUrls: PropagateTraceHeaderCorsUrls;
|
|
165
|
-
/** Whether to schematize document span payload */
|
|
166
|
-
schemifyDocSpanPayload: boolean;
|
|
167
|
-
/** Maximum size for capturing HTTP payload */
|
|
168
|
-
maxCapturingHttpPayloadSize: number;
|
|
169
|
-
/** If true, captures body in traces
|
|
170
|
-
* @default true
|
|
171
|
-
*/
|
|
172
|
-
captureBody: boolean;
|
|
173
|
-
/** If true, captures headers in traces
|
|
174
|
-
* @default true
|
|
175
|
-
*/
|
|
176
|
-
captureHeaders: boolean;
|
|
177
|
-
/** Configuration for masking sensitive data in session recordings */
|
|
178
|
-
masking: TracerReactNativeMasking;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Configuration interface for the Recorder class
|
|
182
|
-
*/
|
|
183
|
-
export interface RecorderConfig extends BaseConfig {
|
|
114
|
+
masking?: MaskingOptions;
|
|
184
115
|
/** Whether to record gestures */
|
|
185
116
|
recordGestures?: boolean;
|
|
186
117
|
/** Whether to record navigation */
|
|
187
118
|
recordNavigation?: boolean;
|
|
188
119
|
/** Whether to record screen */
|
|
189
120
|
recordScreen?: boolean;
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
widgetButtonPlacement: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
199
|
-
/** Whether continuous recording feature is enabled */
|
|
200
|
-
showContinuousRecording: boolean;
|
|
201
|
-
/** Configuration for customizable UI text and labels */
|
|
202
|
-
widgetTextOverrides: WidgetTextOverridesConfig;
|
|
121
|
+
/**
|
|
122
|
+
* (Optional) Logger configuration overrides
|
|
123
|
+
* Allows setting log level, console enabling, and prefix customizations
|
|
124
|
+
*/
|
|
125
|
+
logger?: {
|
|
126
|
+
level?: number;
|
|
127
|
+
enabled?: boolean;
|
|
128
|
+
};
|
|
203
129
|
}
|
|
204
130
|
/**
|
|
205
131
|
* Interface for customizable widget text configuration
|
|
132
|
+
* Allows overriding default text labels and messages in the UI
|
|
206
133
|
*/
|
|
207
|
-
export interface
|
|
134
|
+
export interface TextOverridesOptions {
|
|
208
135
|
/** Title for the initial popover when continuous recording is enabled */
|
|
209
136
|
initialTitleWithContinuous?: string;
|
|
210
137
|
/** Title for the initial popover when continuous recording is disabled */
|
|
@@ -247,17 +174,41 @@ export interface WidgetTextOverridesConfig {
|
|
|
247
174
|
submitDialogCancelText?: string;
|
|
248
175
|
}
|
|
249
176
|
/**
|
|
250
|
-
*
|
|
177
|
+
* Interface for masking configuration options
|
|
178
|
+
* Controls what data is masked in both traces and screen recordings
|
|
251
179
|
*/
|
|
252
|
-
export interface
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
180
|
+
export interface MaskingOptions {
|
|
181
|
+
/** If true, enables masking for debug span payload in traces */
|
|
182
|
+
isContentMaskingEnabled?: boolean;
|
|
183
|
+
/** Custom function for masking body in traces */
|
|
184
|
+
maskBody?: (payload: any, span: Span) => any;
|
|
185
|
+
/** Custom function for masking headers in traces */
|
|
186
|
+
maskHeaders?: (headers: any, span: any) => any;
|
|
187
|
+
/** List of body fields to mask in traces */
|
|
188
|
+
maskBodyFieldsList?: string[];
|
|
189
|
+
/** List of headers to mask in traces */
|
|
190
|
+
maskHeadersList?: string[];
|
|
191
|
+
/** List of headers to include in traces (if specified, only these headers will be captured) */
|
|
192
|
+
headersToInclude?: string[];
|
|
193
|
+
/** List of headers to exclude from traces */
|
|
194
|
+
headersToExclude?: string[];
|
|
195
|
+
/** Whether to mask text inputs (UITextField, UITextView, React Native text components) */
|
|
196
|
+
maskTextInputs?: boolean;
|
|
197
|
+
/** Whether to mask images (UIImageView, React Native Image components) */
|
|
198
|
+
maskImages?: boolean;
|
|
199
|
+
/** Whether to mask buttons (UIButton) */
|
|
200
|
+
maskButtons?: boolean;
|
|
201
|
+
/** Whether to mask labels (UILabel) */
|
|
202
|
+
maskLabels?: boolean;
|
|
203
|
+
/** Whether to mask web views (WKWebView) */
|
|
204
|
+
maskWebViews?: boolean;
|
|
205
|
+
/** Whether to mask sandboxed views (system views that don't belong to current process) */
|
|
206
|
+
maskSandboxedViews?: boolean;
|
|
260
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Main interface for the Session Recorder
|
|
210
|
+
* Defines the public API for session recording functionality
|
|
211
|
+
*/
|
|
261
212
|
export interface ISessionRecorder {
|
|
262
213
|
/**
|
|
263
214
|
* The current session ID
|
|
@@ -329,13 +280,11 @@ export interface ISessionRecorder {
|
|
|
329
280
|
* @param attributes - the attributes to set
|
|
330
281
|
*/
|
|
331
282
|
setSessionAttributes(attributes: Record<string, any>): void;
|
|
332
|
-
/**
|
|
333
|
-
* Set a custom click handler for the recording button
|
|
334
|
-
* @param handler - function that will be invoked when the button is clicked
|
|
335
|
-
*/
|
|
336
|
-
set recordingButtonClickHandler(handler: () => boolean | void);
|
|
337
283
|
}
|
|
338
|
-
|
|
284
|
+
/**
|
|
285
|
+
* Interface representing screen capture events
|
|
286
|
+
* Contains metadata about screen recordings
|
|
287
|
+
*/
|
|
339
288
|
export interface ScreenEvent {
|
|
340
289
|
screenName: string;
|
|
341
290
|
timestamp: number;
|
|
@@ -344,6 +293,10 @@ export interface ScreenEvent {
|
|
|
344
293
|
metadata?: Record<string, any>;
|
|
345
294
|
dataUrl?: string;
|
|
346
295
|
}
|
|
296
|
+
/**
|
|
297
|
+
* Interface representing gesture/touch events
|
|
298
|
+
* Contains information about user interactions with the screen
|
|
299
|
+
*/
|
|
347
300
|
export interface GestureEvent {
|
|
348
301
|
type: string;
|
|
349
302
|
timestamp: number;
|
|
@@ -355,8 +308,19 @@ export interface GestureEvent {
|
|
|
355
308
|
x: number;
|
|
356
309
|
y: number;
|
|
357
310
|
};
|
|
311
|
+
targetInfo?: {
|
|
312
|
+
identifier: string;
|
|
313
|
+
label?: string;
|
|
314
|
+
role?: string;
|
|
315
|
+
testId?: string;
|
|
316
|
+
text?: string;
|
|
317
|
+
};
|
|
358
318
|
metadata?: Record<string, any>;
|
|
359
319
|
}
|
|
320
|
+
/**
|
|
321
|
+
* Interface representing navigation events
|
|
322
|
+
* Contains information about screen/route changes
|
|
323
|
+
*/
|
|
360
324
|
export interface NavigationEvent {
|
|
361
325
|
type: string;
|
|
362
326
|
timestamp: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.WidgetButtonPlacement=exports.SessionState=void 0;var
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.WidgetButtonPlacement=exports.SessionState=void 0;var SessionState;(function(SessionState){SessionState["started"]="2";SessionState["paused"]="1";SessionState["stopped"]="0";})(SessionState||(exports.SessionState=SessionState={}));var WidgetButtonPlacement;(function(WidgetButtonPlacement){WidgetButtonPlacement["topLeft"]="top-left";WidgetButtonPlacement["topRight"]="top-right";WidgetButtonPlacement["bottomLeft"]="bottom-left";WidgetButtonPlacement["bottomRight"]="bottom-right";})(WidgetButtonPlacement||(exports.WidgetButtonPlacement=WidgetButtonPlacement={}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-recorder.js","sourceRoot":"","sources":["../../src/types/session-recorder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-recorder.js","sourceRoot":"","sources":["../../src/types/session-recorder.ts"],"names":[],"mappings":"AAOA,4CAA4C;AAE5C,MAAM,CAAN,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,4BAAY,CAAA;IACZ,6BAAa,CAAA;AACf,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC/B,6CAAoB,CAAA;IACpB,+CAAsB,CAAA;IACtB,mDAA0B,CAAA;IAC1B,qDAA4B,CAAA;AAC9B,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { ViewHierarchyNode } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Global registry for components that should be masked
|
|
4
|
+
* This is a practical solution for React Native input masking
|
|
5
|
+
*/
|
|
6
|
+
declare class ComponentRegistry {
|
|
7
|
+
private components;
|
|
8
|
+
private static instance;
|
|
9
|
+
static getInstance(): ComponentRegistry;
|
|
10
|
+
/**
|
|
11
|
+
* Register a component for masking
|
|
12
|
+
* @param id - Unique identifier for the component
|
|
13
|
+
* @param component - Component information
|
|
14
|
+
*/
|
|
15
|
+
registerComponent(id: string, component: ViewHierarchyNode): void;
|
|
16
|
+
/**
|
|
17
|
+
* Unregister a component
|
|
18
|
+
* @param id - Component identifier
|
|
19
|
+
*/
|
|
20
|
+
unregisterComponent(id: string): void;
|
|
21
|
+
/**
|
|
22
|
+
* Get all registered components
|
|
23
|
+
* @returns Array of registered components
|
|
24
|
+
*/
|
|
25
|
+
getAllComponents(): ViewHierarchyNode[];
|
|
26
|
+
/**
|
|
27
|
+
* Get a specific component
|
|
28
|
+
* @param id - Component identifier
|
|
29
|
+
* @returns Component or undefined
|
|
30
|
+
*/
|
|
31
|
+
getComponent(id: string): ViewHierarchyNode | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Clear all registered components
|
|
34
|
+
*/
|
|
35
|
+
clearAll(): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get components that should be masked
|
|
38
|
+
* @returns Array of components that need masking
|
|
39
|
+
*/
|
|
40
|
+
getMaskableComponents(): ViewHierarchyNode[];
|
|
41
|
+
}
|
|
42
|
+
export declare const componentRegistry: ComponentRegistry;
|
|
43
|
+
/**
|
|
44
|
+
* Helper function to register a TextInput for masking
|
|
45
|
+
* @param id - Unique identifier
|
|
46
|
+
* @param ref - React Native ref
|
|
47
|
+
* @param props - Component props
|
|
48
|
+
*/
|
|
49
|
+
export declare function registerTextInput(id: string, ref: any, props?: any): void;
|
|
50
|
+
/**
|
|
51
|
+
* Helper function to register any component for masking
|
|
52
|
+
* @param id - Unique identifier
|
|
53
|
+
* @param type - Component type
|
|
54
|
+
* @param ref - React Native ref
|
|
55
|
+
* @param props - Component props
|
|
56
|
+
* @param shouldMask - Whether this component should be masked
|
|
57
|
+
*/
|
|
58
|
+
export declare function registerComponent(id: string, type: string, ref: any, props?: any, shouldMask?: boolean): void;
|
|
59
|
+
/**
|
|
60
|
+
* Unregister a component
|
|
61
|
+
* @param id - Component identifier
|
|
62
|
+
*/
|
|
63
|
+
export declare function unregisterComponent(id: string): void;
|
|
64
|
+
export default componentRegistry;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=exports.componentRegistry=void 0;exports.registerComponent=registerComponent;exports.registerTextInput=registerTextInput;exports.unregisterComponent=unregisterComponent;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _index=require("./index");function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var ComponentRegistry=function(){function ComponentRegistry(){(0,_classCallCheck2["default"])(this,ComponentRegistry);this.components=new Map();}return(0,_createClass2["default"])(ComponentRegistry,[{key:"registerComponent",value:function registerComponent(id,component){this.components.set(id,component);_index.logger.debug('ComponentRegistry',"Registered component: ".concat(id));}},{key:"unregisterComponent",value:function unregisterComponent(id){this.components["delete"](id);_index.logger.debug('ComponentRegistry',"Unregistered component: ".concat(id));}},{key:"getAllComponents",value:function getAllComponents(){return Array.from(this.components.values());}},{key:"getComponent",value:function getComponent(id){return this.components.get(id);}},{key:"clearAll",value:function clearAll(){this.components.clear();_index.logger.debug('ComponentRegistry','Cleared all components');}},{key:"getMaskableComponents",value:function getMaskableComponents(){return this.getAllComponents().filter(function(component){return component.masked;});}}],[{key:"getInstance",value:function getInstance(){if(!ComponentRegistry.instance){ComponentRegistry.instance=new ComponentRegistry();}return ComponentRegistry.instance;}}]);}();var componentRegistry=exports.componentRegistry=ComponentRegistry.getInstance();function registerTextInput(id,ref){var props=arguments.length>2&&arguments[2]!==undefined?arguments[2]:{};if(!ref){_index.logger.warn('ComponentRegistry',"Cannot register TextInput ".concat(id,": ref is null"));return;}ref.measure(function(x,y,width,height,pageX,pageY){var component={type:'TextInput',props:_objectSpread(_objectSpread({},props),{},{accessibilityLabel:props.accessibilityLabel||id}),bounds:{x:pageX,y:pageY,width:width,height:height},id:id,masked:true};componentRegistry.registerComponent(id,component);});}function registerComponent(id,type,ref){var props=arguments.length>3&&arguments[3]!==undefined?arguments[3]:{};var shouldMask=arguments.length>4&&arguments[4]!==undefined?arguments[4]:true;if(!ref){_index.logger.warn('ComponentRegistry',"Cannot register ".concat(type," ").concat(id,": ref is null"));return;}ref.measure(function(x,y,width,height,pageX,pageY){var component={type:type,props:_objectSpread(_objectSpread({},props),{},{accessibilityLabel:props.accessibilityLabel||id}),bounds:{x:pageX,y:pageY,width:width,height:height},id:id,masked:shouldMask};componentRegistry.registerComponent(id,component);});}function unregisterComponent(id){componentRegistry.unregisterComponent(id);}var _default=exports["default"]=componentRegistry;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentRegistry.js","sourceRoot":"","sources":["../../src/utils/componentRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type OptionalExpoConstants = {
|
|
2
|
+
expoVersion?: string;
|
|
3
|
+
platform?: {
|
|
4
|
+
ios?: unknown;
|
|
5
|
+
android?: unknown;
|
|
6
|
+
};
|
|
7
|
+
expoConfig?: {
|
|
8
|
+
name?: string;
|
|
9
|
+
version?: string;
|
|
10
|
+
ios?: {
|
|
11
|
+
buildNumber?: string | number;
|
|
12
|
+
bundleIdentifier?: string;
|
|
13
|
+
};
|
|
14
|
+
android?: {
|
|
15
|
+
versionCode?: string | number;
|
|
16
|
+
package?: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
} | undefined;
|
|
20
|
+
declare const OptionalConstants: OptionalExpoConstants;
|
|
21
|
+
export default OptionalConstants;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _expoConstants=_interopRequireDefault(require("expo-constants"));var _default=exports["default"]=_expoConstants["default"];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.optional.expo.js","sourceRoot":"","sources":["../../src/utils/constants.optional.expo.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAGtC,eAAe,SAAkC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var OptionalConstants=undefined;var _default=exports["default"]=OptionalConstants;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.optional.js","sourceRoot":"","sources":["../../src/utils/constants.optional.ts"],"names":[],"mappings":"AAaA,MAAM,iBAAiB,GAA0B,SAAS,CAAA;AAE1D,eAAe,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
type Listener<T> = (state: T, prevState: T) => void;
|
|
2
|
+
export type Store<T> = {
|
|
3
|
+
getState: () => T;
|
|
4
|
+
setState: (partial: Partial<T> | ((prev: T) => T), action?: string) => void;
|
|
5
|
+
subscribe: (listener: Listener<T>) => () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare function createStore<T extends object>(initialState: T): Store<T>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.createStore=createStore;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}function createStore(initialState){var state=initialState;var listeners=new Set();var getState=function getState(){return state;};var setState=function setState(partial){var prevState=state;var nextState=typeof partial==='function'?partial(prevState):_objectSpread(_objectSpread({},prevState),partial);if(Object.is(nextState,prevState))return;state=nextState;listeners.forEach(function(l){return l(state,prevState);});};var subscribe=function subscribe(listener){listeners.add(listener);return function(){return listeners["delete"](listener);};};return{getState:getState,setState:setState,subscribe:subscribe};}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createStore.js","sourceRoot":"","sources":["../../src/utils/createStore.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,WAAW,CAAmB,YAAe;IAC3D,IAAI,KAAK,GAAM,YAAY,CAAA;IAC3B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAe,CAAA;IAExC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,KAAK,CAAA;IAE5B,MAAM,QAAQ,GAAyB,CAAC,OAAO,EAAE,EAAE;QACjD,MAAM,SAAS,GAAG,KAAK,CAAA;QACvB,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAA0B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,OAAO,EAAO,CAAA;QAC5H,IAAI,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;YAAE,OAAM;QAC3C,KAAK,GAAG,SAAS,CAAA;QACjB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;IAC/C,CAAC,CAAA;IAED,MAAM,SAAS,GAA0B,CAAC,QAAQ,EAAE,EAAE;QACpD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACvB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;AAC1C,CAAC"}
|
package/dist/utils/logger.d.ts
CHANGED
package/dist/utils/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.logger=exports.logWarn=exports.logSuccess=exports.logInfo=exports.logFailure=exports.logError=exports.logDebug=exports.LogLevel=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var LogLevel;(function(LogLevel){LogLevel[LogLevel["DEBUG"]=0]="DEBUG";LogLevel[LogLevel["INFO"]=1]="INFO";LogLevel[LogLevel["WARN"]=2]="WARN";LogLevel[LogLevel["ERROR"]=3]="ERROR";})(LogLevel||(exports.LogLevel=LogLevel={}));var Logger=function(){function Logger(){(0,_classCallCheck2["default"])(this,Logger);this.config={level:LogLevel.INFO,
|
|
1
|
+
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.logger=exports.logWarn=exports.logSuccess=exports.logInfo=exports.logFailure=exports.logError=exports.logDebug=exports.LogLevel=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var LogLevel;(function(LogLevel){LogLevel[LogLevel["DEBUG"]=0]="DEBUG";LogLevel[LogLevel["INFO"]=1]="INFO";LogLevel[LogLevel["WARN"]=2]="WARN";LogLevel[LogLevel["ERROR"]=3]="ERROR";})(LogLevel||(exports.LogLevel=LogLevel={}));var Logger=function(){function Logger(){(0,_classCallCheck2["default"])(this,Logger);this.config={level:LogLevel.INFO,enabled:true,enablePrefix:true,prefix:'[SessionRecorder]'};this.componentPrefixes=new Map([['ScreenRecorder','📸'],['NativeGestureRecorder','👆'],['SessionRecorderContext','🎯'],['EventExporter','📤'],['NavigationTracker','📸'],['RecorderReactNativeSDK','📤'],['DEBUGGER_LIB','🔍']]);}return(0,_createClass2["default"])(Logger,[{key:"configure",value:function configure(config){this.config=_objectSpread(_objectSpread({},this.config),config);}},{key:"setLevel",value:function setLevel(level){this.config.level=level;}},{key:"setConsoleEnabled",value:function setConsoleEnabled(enabled){this.config.enabled=enabled;}},{key:"setComponentPrefix",value:function setComponentPrefix(component,emoji){this.componentPrefixes.set(component,emoji);}},{key:"getPrefix",value:function getPrefix(component){if(!this.config.enablePrefix)return'';var emoji=this.componentPrefixes.get(component)||'📝';return"".concat(this.config.prefix," ").concat(emoji," [").concat(component,"]");}},{key:"shouldLog",value:function shouldLog(level){return level>=this.config.level&&this.config.enabled;}},{key:"formatMessage",value:function formatMessage(component,level,message,data){var prefix=this.getPrefix(component);var levelName=LogLevel[level];var formattedMessage="".concat(prefix," ").concat(levelName," ").concat(message);if(data!==undefined){formattedMessage+=" ".concat(JSON.stringify(data));}return formattedMessage;}},{key:"debug",value:function debug(component,message,data){if(!this.shouldLog(LogLevel.DEBUG))return;var formattedMessage=this.formatMessage(component,LogLevel.DEBUG,message,data);console.log(formattedMessage);}},{key:"info",value:function info(component,message,data){if(!this.shouldLog(LogLevel.INFO))return;var formattedMessage=this.formatMessage(component,LogLevel.INFO,message,data);console.log(formattedMessage);}},{key:"warn",value:function warn(component,message,data){if(!this.shouldLog(LogLevel.WARN))return;var formattedMessage=this.formatMessage(component,LogLevel.WARN,message,data);console.warn(formattedMessage);}},{key:"error",value:function error(component,message,data){if(!this.shouldLog(LogLevel.ERROR))return;var formattedMessage=this.formatMessage(component,LogLevel.ERROR,message,data);console.error(formattedMessage);}},{key:"success",value:function success(component,message,data){if(!this.shouldLog(LogLevel.INFO))return;var prefix=this.getPrefix(component);var formattedMessage="".concat(prefix," \u2705 ").concat(message);var fullMessage=formattedMessage;if(data!==undefined){fullMessage+=" ".concat(JSON.stringify(data));}console.log(fullMessage);}},{key:"failure",value:function failure(component,message,data){if(!this.shouldLog(LogLevel.ERROR))return;var prefix=this.getPrefix(component);var formattedMessage="".concat(prefix," \u274C ").concat(message);var fullMessage=formattedMessage;if(data!==undefined){fullMessage+=" ".concat(JSON.stringify(data));}console.error(fullMessage);}}]);}();var logger=exports.logger=new Logger();var logDebug=exports.logDebug=function logDebug(component,message,data){return logger.debug(component,message,data);};var logInfo=exports.logInfo=function logInfo(component,message,data){return logger.info(component,message,data);};var logWarn=exports.logWarn=function logWarn(component,message,data){return logger.warn(component,message,data);};var logError=exports.logError=function logError(component,message,data){return logger.error(component,message,data);};var logSuccess=exports.logSuccess=function logSuccess(component,message,data){return logger.success(component,message,data);};var logFailure=exports.logFailure=function logFailure(component,message,data){return logger.failure(component,message,data);};
|
package/dist/utils/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AASD,MAAM,MAAM;IAAZ;QACU,WAAM,GAAiB;YAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI;YACpB,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AASD,MAAM,MAAM;IAAZ;QACU,WAAM,GAAiB;YAC7B,KAAK,EAAE,QAAQ,CAAC,IAAI;YACpB,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,mBAAmB;SAC5B,CAAA;QAEO,sBAAiB,GAAwB,IAAI,GAAG,CAAC;YACvD,CAAC,gBAAgB,EAAE,IAAI,CAAC;YACxB,CAAC,uBAAuB,EAAE,IAAI,CAAC;YAC/B,CAAC,wBAAwB,EAAE,IAAI,CAAC;YAChC,CAAC,eAAe,EAAE,IAAI,CAAC;YACvB,CAAC,mBAAmB,EAAE,IAAI,CAAC;YAC3B,CAAC,wBAAwB,EAAE,IAAI,CAAC;YAChC,CAAC,cAAc,EAAE,IAAI,CAAC;SACvB,CAAC,CAAA;IA8KJ,CAAC;IA5KC;;;OAGG;IACH,SAAS,CAAC,MAA6B;QACrC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAA;IAC7C,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAe;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,OAAgB;QAChC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IAC/B,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,SAAiB,EAAE,KAAa;QACjD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC9C,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,SAAiB;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,OAAO,EAAE,CAAA;QAExC,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAA;QAC3D,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS,GAAG,CAAA;IACxD,CAAC;IAED;;;;OAIG;IACK,SAAS,CAAC,KAAe;QAC/B,OAAO,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAA;IAC1D,CAAC;IAED;;;;;;;OAOG;IACK,aAAa,CAAC,SAAiB,EAAE,KAAe,EAAE,OAAe,EAAE,IAAU;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;QAEjC,IAAI,gBAAgB,GAAG,GAAG,MAAM,IAAI,SAAS,IAAI,OAAO,EAAE,CAAA;QAE1D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,gBAAgB,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAA;QAChD,CAAC;QAED,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAM;QAE3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACrF,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAE1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACpF,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAE1C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACpF,sCAAsC;QACtC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IAChC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAM;QAE3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;QACrF,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACjC,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAM;QAE1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,gBAAgB,GAAG,GAAG,MAAM,MAAM,OAAO,EAAE,CAAA;QAEjD,IAAI,WAAW,GAAG,gBAAgB,CAAA;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,WAAW,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAA;QAC3C,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAM;QAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACxC,MAAM,gBAAgB,GAAG,GAAG,MAAM,MAAM,OAAO,EAAE,CAAA;QAEjD,IAAI,WAAW,GAAG,gBAAgB,CAAA;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,WAAW,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAA;QAC3C,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC5B,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;AAElC,oDAAoD;AACpD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAClH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAChH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAChH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AAClH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;AACtH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAE,OAAe,EAAE,IAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.testAutoLinkingConfig=testAutoLinkingConfig;exports.testNativeModuleAvailability=testNativeModuleAvailability;var _reactNative=require("react-native");var _logger=require("./logger");function testNativeModuleAvailability(){_logger.logger.info('NativeModuleTest','Testing native module availability...');var availableModules=Object.keys(_reactNative.NativeModules);_logger.logger.info('NativeModuleTest',"Available native modules: ".concat(availableModules.join(', ')));var SessionRecorderNative=_reactNative.NativeModules.SessionRecorderNative;if(SessionRecorderNative){_logger.logger.info('NativeModuleTest','✅ SessionRecorderNative module is available!');if(typeof SessionRecorderNative.captureAndMask==='function'){_logger.logger.info('NativeModuleTest','✅ captureAndMask method is available!');}else{_logger.logger.warn('NativeModuleTest','❌ captureAndMask method is not available');}if(typeof SessionRecorderNative.captureAndMaskWithOptions==='function'){_logger.logger.info('NativeModuleTest','✅ captureAndMaskWithOptions method is available!');}else{_logger.logger.warn('NativeModuleTest','❌ captureAndMaskWithOptions method is not available');}}else{_logger.logger.error('NativeModuleTest','❌ SessionRecorderNative module is not available');_logger.logger.info('NativeModuleTest','This could mean:');_logger.logger.info('NativeModuleTest','1. Auto-linking has not completed yet');_logger.logger.info('NativeModuleTest','2. The native module was not properly built');_logger.logger.info('NativeModuleTest','3. The module name does not match');}}function testAutoLinkingConfig(){_logger.logger.info('NativeModuleTest','Testing auto-linking configuration...');try{var config=require('../../react-native.config.js');_logger.logger.info('NativeModuleTest','✅ react-native.config.js found');if(config.dependencies&&config.dependencies['react-native-session-recorder']){_logger.logger.info('NativeModuleTest','✅ Auto-linking configuration found for react-native-session-recorder');}else{_logger.logger.warn('NativeModuleTest','❌ Auto-linking configuration not found for react-native-session-recorder');}}catch(error){_logger.logger.warn('NativeModuleTest','❌ react-native.config.js not found or invalid');}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeModuleTest.js","sourceRoot":"","sources":["../../src/utils/nativeModuleTest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;IAExE,mCAAmC;IACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACnD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,6BAA6B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAE3F,+CAA+C;IAC/C,MAAM,EAAE,qBAAqB,EAAE,GAAG,aAAa,CAAA;IAE/C,IAAI,qBAAqB,EAAE,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,8CAA8C,CAAC,CAAA;QAE/E,4BAA4B;QAC5B,IAAI,OAAO,qBAAqB,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;QAC1E,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,0CAA0C,CAAC,CAAA;QAC7E,CAAC;QAED,IAAI,OAAO,qBAAqB,CAAC,yBAAyB,KAAK,UAAU,EAAE,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,kDAAkD,CAAC,CAAA;QACrF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,qDAAqD,CAAC,CAAA;QACxF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAA;QACnF,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;QACnD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;QACxE,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,6CAA6C,CAAC,CAAA;QAC9E,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,mCAAmC,CAAC,CAAA;IACtE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAA;IAExE,oEAAoE;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAA;QACtD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,gCAAgC,CAAC,CAAA;QAEjE,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,+BAA+B,CAAC,EAAE,CAAC;YAChF,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,sEAAsE,CAAC,CAAA;QACzG,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,0EAA0E,CAAC,CAAA;QAC7G,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,+CAA+C,CAAC,CAAA;IAClF,CAAC;AACH,CAAC"}
|
package/dist/utils/platform.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ export interface PlatformInfo {
|
|
|
7
7
|
expoVersion?: string;
|
|
8
8
|
deviceType: string;
|
|
9
9
|
}
|
|
10
|
+
export declare function detectPlatform(): PlatformInfo;
|
|
11
|
+
export declare function getPlatformAttributes(): Record<string, any>;
|
|
12
|
+
export declare function isExpoEnvironment(): boolean;
|
|
10
13
|
export declare function isReactNativeEnvironment(): boolean;
|
|
11
14
|
/**
|
|
12
15
|
* Configure app metadata for non-Expo React Native apps
|
|
@@ -43,4 +46,12 @@ export declare function getConfiguredAppMetadata(): {
|
|
|
43
46
|
buildNumber?: string;
|
|
44
47
|
displayName?: string;
|
|
45
48
|
};
|
|
49
|
+
/**
|
|
50
|
+
* Enhanced app metadata detection with automatic fallbacks
|
|
51
|
+
*/
|
|
52
|
+
export declare function getAppMetadata(): {
|
|
53
|
+
name?: string;
|
|
54
|
+
version?: string;
|
|
55
|
+
bundleId?: string;
|
|
56
|
+
};
|
|
46
57
|
export declare const getNavigatorInfo: () => IResourceAttributes;
|
package/dist/utils/platform.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.configureAppMetadata=configureAppMetadata;exports.detectPlatform=detectPlatform;exports.getConfiguredAppMetadata=getConfiguredAppMetadata;exports.getNavigatorInfo=void 0;exports.getPlatformAttributes=getPlatformAttributes;exports.isExpoEnvironment=isExpoEnvironment;exports.isReactNativeEnvironment=isReactNativeEnvironment;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var
|
|
1
|
+
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.configureAppMetadata=configureAppMetadata;exports.detectPlatform=detectPlatform;exports.getAppMetadata=getAppMetadata;exports.getConfiguredAppMetadata=getConfiguredAppMetadata;exports.getNavigatorInfo=void 0;exports.getPlatformAttributes=getPlatformAttributes;exports.isExpoEnvironment=isExpoEnvironment;exports.isReactNativeEnvironment=isReactNativeEnvironment;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _constants=_interopRequireDefault(require("./constants.optional"));var _reactNative=require("react-native");var _version=require("../version");var _appMetadata=require("./app-metadata");function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var globalAppMetadata={};var autoDetectedMetadata=null;function detectPlatform(){var _a;try{var isExpo=!!(_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoVersion);if(isExpo){var expoVersion=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoVersion;var platform=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].platform;return{isExpo:true,isReactNative:true,platform:(platform===null||platform===void 0?void 0:platform.ios)?'ios':(platform===null||platform===void 0?void 0:platform.android)?'android':'unknown',expoVersion:expoVersion,deviceType:'expo'};}return{isExpo:false,isReactNative:true,platform:_reactNative.Platform.OS,platformVersion:(_a=_reactNative.Platform.Version)===null||_a===void 0?void 0:_a.toString(),deviceType:_reactNative.Platform.OS};}catch(error){return{isExpo:false,isReactNative:false,platform:'unknown',deviceType:'unknown'};}}function getPlatformAttributes(){var platformInfo=detectPlatform();var attributes={platform:platformInfo.isExpo?'expo':'react-native','device.type':platformInfo.deviceType};if(platformInfo.platformVersion){attributes['platform.version']=platformInfo.platformVersion;}if(platformInfo.expoVersion){attributes['expo.version']=platformInfo.expoVersion;}return attributes;}function isExpoEnvironment(){return detectPlatform().isExpo;}function isReactNativeEnvironment(){return detectPlatform().isReactNative;}function configureAppMetadata(metadata){globalAppMetadata=_objectSpread(_objectSpread({},globalAppMetadata),metadata);}function getConfiguredAppMetadata(){return _objectSpread({},globalAppMetadata);}function autoDetectAppMetadata(){if(autoDetectedMetadata){return autoDetectedMetadata;}try{var autoMetadata=(0,_appMetadata.getAutoDetectedAppMetadata)();var metadata={};if(autoMetadata.name)metadata.name=autoMetadata.name;if(autoMetadata.version)metadata.version=autoMetadata.version;if(autoMetadata.bundleId)metadata.bundleId=autoMetadata.bundleId;autoDetectedMetadata=metadata;return metadata;}catch(error){autoDetectedMetadata={};return{};}}function getAppMetadata(){var expoMetadata=getExpoMetadata();var configuredMetadata=getConfiguredAppMetadata();var autoMetadata=autoDetectAppMetadata();return{name:expoMetadata.name||configuredMetadata.name||autoMetadata.name,version:expoMetadata.version||configuredMetadata.version||autoMetadata.version,bundleId:expoMetadata.bundleId||configuredMetadata.bundleId||autoMetadata.bundleId};}function getExpoMetadata(){var _a,_b;var expoConfig=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoConfig;if(!expoConfig)return{};return{name:expoConfig.name,version:expoConfig.version,bundleId:((_a=expoConfig.ios)===null||_a===void 0?void 0:_a.bundleIdentifier)||((_b=expoConfig.android)===null||_b===void 0?void 0:_b["package"])};}var getNavigatorInfo=exports.getNavigatorInfo=function getNavigatorInfo(){var platformInfo=detectPlatform();var screenData=_reactNative.Dimensions.get('window');var screenDataScreen=_reactNative.Dimensions.get('screen');var pixelRatio=_reactNative.PixelRatio.get();var getDeviceType=function getDeviceType(){var width=screenData.width,height=screenData.height;var minDimension=Math.min(width,height);var maxDimension=Math.max(width,height);if(maxDimension>=1024){return'Tablet';}else if(minDimension>=600){return'Large Phone';}else{return'Phone';}};var getOrientation=function getOrientation(){var width=screenData.width,height=screenData.height;return width>height?'Landscape':'Portrait';};var getOSInfo=function getOSInfo(){if(platformInfo.isExpo){var platform=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].platform;if(platform===null||platform===void 0?void 0:platform.ios){return"iOS ".concat(_reactNative.Platform.Version);}else if(platform===null||platform===void 0?void 0:platform.android){return"Android ".concat(_reactNative.Platform.Version);}}if(_reactNative.Platform.OS==='ios'){return"iOS ".concat(_reactNative.Platform.Version);}else if(_reactNative.Platform.OS==='android'){return"Android ".concat(_reactNative.Platform.Version);}return"".concat(_reactNative.Platform.OS," ").concat(_reactNative.Platform.Version||'Unknown');};var getDeviceInfo=function getDeviceInfo(){var deviceType=getDeviceType();var osInfo=getOSInfo();return"".concat(deviceType," - ").concat(osInfo);};var getBrowserInfo=function getBrowserInfo(){if(platformInfo.isExpo){return"Expo ".concat(platformInfo.expoVersion||'Unknown'," - React Native");}return'React Native';};var getScreenSize=function getScreenSize(){return"".concat(Math.round(screenData.width),"x").concat(Math.round(screenData.height));};var metadata=getAppMetadata();var getAppInfo=function getAppInfo(){var appName=getAppName();var appVersion=getAppVersion();return"".concat(appName," v").concat(appVersion);};var getAppName=function getAppName(){if(metadata.name)return metadata.name;var configuredMetadata=getConfiguredAppMetadata();if(configuredMetadata.displayName)return configuredMetadata.displayName;return'React Native App';};var getAppVersion=function getAppVersion(){if(metadata.version)return metadata.version;return'Unknown';};var getBundleId=function getBundleId(){if(metadata.bundleId)return metadata.bundleId;return'com.reactnative.app';};var getBuildNumber=function getBuildNumber(){var _a,_b,_c,_d;var expoBuildNumber=((_b=(_a=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoConfig)===null||_a===void 0?void 0:_a.ios)===null||_b===void 0?void 0:_b.buildNumber)||((_d=(_c=_constants["default"]===null||_constants["default"]===void 0?void 0:_constants["default"].expoConfig)===null||_c===void 0?void 0:_c.android)===null||_d===void 0?void 0:_d.versionCode);if(expoBuildNumber)return expoBuildNumber.toString();var configuredMetadata=getConfiguredAppMetadata();if(configuredMetadata.buildNumber)return configuredMetadata.buildNumber;return'1';};var getHardwareInfo=function getHardwareInfo(){var pixelRatioInfo="Pixel Ratio: ".concat(pixelRatio);var screenDensity=_reactNative.PixelRatio.getFontScale();return"".concat(pixelRatioInfo,", Font Scale: ").concat(screenDensity);};return{platform:platformInfo.isExpo?'expo':'react-native',userAgent:getBrowserInfo(),timestamp:new Date().toISOString(),deviceInfo:getDeviceInfo(),osInfo:getOSInfo(),browserInfo:getBrowserInfo(),screenSize:getScreenSize(),pixelRatio:pixelRatio,orientation:getOrientation(),screenWidth:Math.round(screenData.width),screenHeight:Math.round(screenData.height),screenScale:pixelRatio,hardwareConcurrency:1,cookiesEnabled:'N/A',packageVersion:_version.version,appInfo:getAppInfo(),appName:getAppName(),appVersion:getAppVersion(),bundleId:getBundleId(),buildNumber:getBuildNumber(),platformType:platformInfo.platform,platformVersion:platformInfo.platformVersion,expoVersion:platformInfo.expoVersion,deviceType:getDeviceType(),hardwareInfo:getHardwareInfo(),screenDensity:_reactNative.PixelRatio.getFontScale(),screenScaleFactor:pixelRatio,windowWidth:Math.round(screenData.width),windowHeight:Math.round(screenData.height),fullScreenWidth:Math.round(screenDataScreen.width),fullScreenHeight:Math.round(screenDataScreen.height),isExpo:platformInfo.isExpo,isReactNative:platformInfo.isReactNative,environment:platformInfo.isExpo?'expo':'react-native',systemType:'mobile'};};
|