@rejourneyco/react-native 1.0.0
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/android/build.gradle.kts +135 -0
- package/android/consumer-rules.pro +10 -0
- package/android/proguard-rules.pro +1 -0
- package/android/src/main/AndroidManifest.xml +15 -0
- package/android/src/main/java/com/rejourney/RejourneyModuleImpl.kt +2981 -0
- package/android/src/main/java/com/rejourney/capture/ANRHandler.kt +206 -0
- package/android/src/main/java/com/rejourney/capture/ActivityTracker.kt +98 -0
- package/android/src/main/java/com/rejourney/capture/CaptureEngine.kt +1553 -0
- package/android/src/main/java/com/rejourney/capture/CaptureHeuristics.kt +375 -0
- package/android/src/main/java/com/rejourney/capture/CrashHandler.kt +153 -0
- package/android/src/main/java/com/rejourney/capture/MotionEvent.kt +215 -0
- package/android/src/main/java/com/rejourney/capture/SegmentUploader.kt +512 -0
- package/android/src/main/java/com/rejourney/capture/VideoEncoder.kt +773 -0
- package/android/src/main/java/com/rejourney/capture/ViewHierarchyScanner.kt +633 -0
- package/android/src/main/java/com/rejourney/capture/ViewSerializer.kt +286 -0
- package/android/src/main/java/com/rejourney/core/Constants.kt +117 -0
- package/android/src/main/java/com/rejourney/core/Logger.kt +93 -0
- package/android/src/main/java/com/rejourney/core/Types.kt +124 -0
- package/android/src/main/java/com/rejourney/lifecycle/SessionLifecycleService.kt +162 -0
- package/android/src/main/java/com/rejourney/network/DeviceAuthManager.kt +747 -0
- package/android/src/main/java/com/rejourney/network/HttpClientProvider.kt +16 -0
- package/android/src/main/java/com/rejourney/network/NetworkMonitor.kt +272 -0
- package/android/src/main/java/com/rejourney/network/UploadManager.kt +1363 -0
- package/android/src/main/java/com/rejourney/network/UploadWorker.kt +492 -0
- package/android/src/main/java/com/rejourney/privacy/PrivacyMask.kt +645 -0
- package/android/src/main/java/com/rejourney/touch/GestureClassifier.kt +233 -0
- package/android/src/main/java/com/rejourney/touch/KeyboardTracker.kt +158 -0
- package/android/src/main/java/com/rejourney/touch/TextInputTracker.kt +181 -0
- package/android/src/main/java/com/rejourney/touch/TouchInterceptor.kt +591 -0
- package/android/src/main/java/com/rejourney/utils/EventBuffer.kt +284 -0
- package/android/src/main/java/com/rejourney/utils/OEMDetector.kt +154 -0
- package/android/src/main/java/com/rejourney/utils/PerfTiming.kt +235 -0
- package/android/src/main/java/com/rejourney/utils/Telemetry.kt +297 -0
- package/android/src/main/java/com/rejourney/utils/WindowUtils.kt +84 -0
- package/android/src/newarch/java/com/rejourney/RejourneyModule.kt +187 -0
- package/android/src/newarch/java/com/rejourney/RejourneyPackage.kt +40 -0
- package/android/src/oldarch/java/com/rejourney/RejourneyModule.kt +218 -0
- package/android/src/oldarch/java/com/rejourney/RejourneyPackage.kt +23 -0
- package/ios/Capture/RJANRHandler.h +42 -0
- package/ios/Capture/RJANRHandler.m +328 -0
- package/ios/Capture/RJCaptureEngine.h +275 -0
- package/ios/Capture/RJCaptureEngine.m +2062 -0
- package/ios/Capture/RJCaptureHeuristics.h +80 -0
- package/ios/Capture/RJCaptureHeuristics.m +903 -0
- package/ios/Capture/RJCrashHandler.h +46 -0
- package/ios/Capture/RJCrashHandler.m +313 -0
- package/ios/Capture/RJMotionEvent.h +183 -0
- package/ios/Capture/RJMotionEvent.m +183 -0
- package/ios/Capture/RJPerformanceManager.h +100 -0
- package/ios/Capture/RJPerformanceManager.m +373 -0
- package/ios/Capture/RJPixelBufferDownscaler.h +42 -0
- package/ios/Capture/RJPixelBufferDownscaler.m +85 -0
- package/ios/Capture/RJSegmentUploader.h +146 -0
- package/ios/Capture/RJSegmentUploader.m +778 -0
- package/ios/Capture/RJVideoEncoder.h +247 -0
- package/ios/Capture/RJVideoEncoder.m +1036 -0
- package/ios/Capture/RJViewControllerTracker.h +73 -0
- package/ios/Capture/RJViewControllerTracker.m +508 -0
- package/ios/Capture/RJViewHierarchyScanner.h +215 -0
- package/ios/Capture/RJViewHierarchyScanner.m +1464 -0
- package/ios/Capture/RJViewSerializer.h +119 -0
- package/ios/Capture/RJViewSerializer.m +498 -0
- package/ios/Core/RJConstants.h +124 -0
- package/ios/Core/RJConstants.m +88 -0
- package/ios/Core/RJLifecycleManager.h +85 -0
- package/ios/Core/RJLifecycleManager.m +308 -0
- package/ios/Core/RJLogger.h +61 -0
- package/ios/Core/RJLogger.m +211 -0
- package/ios/Core/RJTypes.h +176 -0
- package/ios/Core/RJTypes.m +66 -0
- package/ios/Core/Rejourney.h +64 -0
- package/ios/Core/Rejourney.mm +2495 -0
- package/ios/Network/RJDeviceAuthManager.h +94 -0
- package/ios/Network/RJDeviceAuthManager.m +967 -0
- package/ios/Network/RJNetworkMonitor.h +68 -0
- package/ios/Network/RJNetworkMonitor.m +267 -0
- package/ios/Network/RJRetryManager.h +73 -0
- package/ios/Network/RJRetryManager.m +325 -0
- package/ios/Network/RJUploadManager.h +267 -0
- package/ios/Network/RJUploadManager.m +2296 -0
- package/ios/Privacy/RJPrivacyMask.h +163 -0
- package/ios/Privacy/RJPrivacyMask.m +922 -0
- package/ios/Rejourney.h +63 -0
- package/ios/Touch/RJGestureClassifier.h +130 -0
- package/ios/Touch/RJGestureClassifier.m +333 -0
- package/ios/Touch/RJTouchInterceptor.h +169 -0
- package/ios/Touch/RJTouchInterceptor.m +772 -0
- package/ios/Utils/RJEventBuffer.h +112 -0
- package/ios/Utils/RJEventBuffer.m +358 -0
- package/ios/Utils/RJGzipUtils.h +33 -0
- package/ios/Utils/RJGzipUtils.m +89 -0
- package/ios/Utils/RJKeychainManager.h +48 -0
- package/ios/Utils/RJKeychainManager.m +111 -0
- package/ios/Utils/RJPerfTiming.h +209 -0
- package/ios/Utils/RJPerfTiming.m +264 -0
- package/ios/Utils/RJTelemetry.h +92 -0
- package/ios/Utils/RJTelemetry.m +320 -0
- package/ios/Utils/RJWindowUtils.h +66 -0
- package/ios/Utils/RJWindowUtils.m +133 -0
- package/lib/commonjs/NativeRejourney.js +40 -0
- package/lib/commonjs/components/Mask.js +79 -0
- package/lib/commonjs/index.js +1381 -0
- package/lib/commonjs/sdk/autoTracking.js +1259 -0
- package/lib/commonjs/sdk/constants.js +151 -0
- package/lib/commonjs/sdk/errorTracking.js +199 -0
- package/lib/commonjs/sdk/index.js +50 -0
- package/lib/commonjs/sdk/metricsTracking.js +204 -0
- package/lib/commonjs/sdk/navigation.js +151 -0
- package/lib/commonjs/sdk/networkInterceptor.js +412 -0
- package/lib/commonjs/sdk/utils.js +363 -0
- package/lib/commonjs/types/expo-router.d.js +2 -0
- package/lib/commonjs/types/index.js +2 -0
- package/lib/module/NativeRejourney.js +38 -0
- package/lib/module/components/Mask.js +72 -0
- package/lib/module/index.js +1284 -0
- package/lib/module/sdk/autoTracking.js +1233 -0
- package/lib/module/sdk/constants.js +145 -0
- package/lib/module/sdk/errorTracking.js +189 -0
- package/lib/module/sdk/index.js +12 -0
- package/lib/module/sdk/metricsTracking.js +187 -0
- package/lib/module/sdk/navigation.js +143 -0
- package/lib/module/sdk/networkInterceptor.js +401 -0
- package/lib/module/sdk/utils.js +342 -0
- package/lib/module/types/expo-router.d.js +2 -0
- package/lib/module/types/index.js +2 -0
- package/lib/typescript/NativeRejourney.d.ts +147 -0
- package/lib/typescript/components/Mask.d.ts +39 -0
- package/lib/typescript/index.d.ts +117 -0
- package/lib/typescript/sdk/autoTracking.d.ts +204 -0
- package/lib/typescript/sdk/constants.d.ts +120 -0
- package/lib/typescript/sdk/errorTracking.d.ts +32 -0
- package/lib/typescript/sdk/index.d.ts +9 -0
- package/lib/typescript/sdk/metricsTracking.d.ts +58 -0
- package/lib/typescript/sdk/navigation.d.ts +33 -0
- package/lib/typescript/sdk/networkInterceptor.d.ts +47 -0
- package/lib/typescript/sdk/utils.d.ts +148 -0
- package/lib/typescript/types/index.d.ts +624 -0
- package/package.json +102 -0
- package/rejourney.podspec +21 -0
- package/src/NativeRejourney.ts +165 -0
- package/src/components/Mask.tsx +80 -0
- package/src/index.ts +1459 -0
- package/src/sdk/autoTracking.ts +1373 -0
- package/src/sdk/constants.ts +134 -0
- package/src/sdk/errorTracking.ts +231 -0
- package/src/sdk/index.ts +11 -0
- package/src/sdk/metricsTracking.ts +232 -0
- package/src/sdk/navigation.ts +157 -0
- package/src/sdk/networkInterceptor.ts +440 -0
- package/src/sdk/utils.ts +369 -0
- package/src/types/expo-router.d.ts +7 -0
- package/src/types/index.ts +739 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RJPrivacyMask.h
|
|
3
|
+
// Rejourney
|
|
4
|
+
//
|
|
5
|
+
// Privacy masking for sensitive UI elements during screen capture.
|
|
6
|
+
// Uses Core Graphics to draw blur overlays directly into the captured image,
|
|
7
|
+
// avoiding any visual flashing for the user.
|
|
8
|
+
//
|
|
9
|
+
// Licensed under the Apache License, Version 2.0 (the "License").
|
|
10
|
+
// Copyright (c) 2026 Rejourney
|
|
11
|
+
//
|
|
12
|
+
|
|
13
|
+
#import <CoreGraphics/CoreGraphics.h>
|
|
14
|
+
#import <Foundation/Foundation.h>
|
|
15
|
+
#import <UIKit/UIKit.h>
|
|
16
|
+
|
|
17
|
+
@class RJViewHierarchyScanResult;
|
|
18
|
+
|
|
19
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Privacy mask that draws blur overlays directly into captured images.
|
|
23
|
+
*
|
|
24
|
+
* Unlike overlay-based approaches, this class:
|
|
25
|
+
* - Does NOT add any views to the window (no user-visible flashing)
|
|
26
|
+
* - Draws blur rectangles directly into the graphics context
|
|
27
|
+
* - Detects ONLY actual text input fields (not display text)
|
|
28
|
+
* - Detects camera preview layers
|
|
29
|
+
* - Handles background state with full-screen blur
|
|
30
|
+
*/
|
|
31
|
+
@interface RJPrivacyMask : NSObject
|
|
32
|
+
|
|
33
|
+
#pragma mark - Configuration
|
|
34
|
+
|
|
35
|
+
/// Whether text input masking is enabled. Default: YES
|
|
36
|
+
@property(nonatomic, assign) BOOL maskTextInputs;
|
|
37
|
+
|
|
38
|
+
/// Whether camera preview masking is enabled. Default: YES
|
|
39
|
+
@property(nonatomic, assign) BOOL maskCameraViews;
|
|
40
|
+
|
|
41
|
+
/// Whether web view masking is enabled. Default: YES
|
|
42
|
+
@property(nonatomic, assign) BOOL maskWebViews;
|
|
43
|
+
|
|
44
|
+
/// Whether video layer masking is enabled. Default: YES
|
|
45
|
+
@property(nonatomic, assign) BOOL maskVideoLayers;
|
|
46
|
+
|
|
47
|
+
/// Corner radius for blur rectangles. Default: 8.0
|
|
48
|
+
@property(nonatomic, assign) CGFloat blurCornerRadius;
|
|
49
|
+
|
|
50
|
+
/// Padding around masked views. Default: 4.0
|
|
51
|
+
@property(nonatomic, assign) CGFloat maskPadding;
|
|
52
|
+
|
|
53
|
+
#pragma mark - Background State
|
|
54
|
+
|
|
55
|
+
/// Whether the app is currently in background
|
|
56
|
+
@property(nonatomic, readonly) BOOL isInBackground;
|
|
57
|
+
|
|
58
|
+
#pragma mark - Core Methods
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Draws privacy masks directly into the current graphics context.
|
|
62
|
+
* Call this AFTER drawing the window hierarchy but BEFORE getting the image.
|
|
63
|
+
*
|
|
64
|
+
* @param window The window that was drawn (to find sensitive views)
|
|
65
|
+
* @param bounds The bounds of the drawing context
|
|
66
|
+
* @param scale The scale factor of the drawing context
|
|
67
|
+
*/
|
|
68
|
+
- (void)drawMasksForWindow:(UIWindow *)window
|
|
69
|
+
bounds:(CGRect)bounds
|
|
70
|
+
scale:(CGFloat)scale;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Draws privacy masks using pre-computed scan result.
|
|
74
|
+
*
|
|
75
|
+
* Use this when RJViewHierarchyScanner has already scanned the window
|
|
76
|
+
* to avoid redundant view tree traversal.
|
|
77
|
+
*
|
|
78
|
+
* @param scanResult The pre-computed scan result containing sensitive frames.
|
|
79
|
+
* @param bounds The bounds of the drawing context.
|
|
80
|
+
* @param scale The scale factor of the drawing context.
|
|
81
|
+
*/
|
|
82
|
+
- (void)drawMasksWithScanResult:(RJViewHierarchyScanResult *)scanResult
|
|
83
|
+
bounds:(CGRect)bounds
|
|
84
|
+
scale:(CGFloat)scale;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Applies privacy masks directly to a CVPixelBuffer using Core Graphics.
|
|
88
|
+
* Thread-safe: Designed to be called from a background thread.
|
|
89
|
+
*
|
|
90
|
+
* @param pixelBuffer The CVPixelBufferRef to draw masks onto.
|
|
91
|
+
* @param scanResult The scan result containing mask frames.
|
|
92
|
+
* @param scale The total scale factor (screen scale * capture scale) to
|
|
93
|
+
* transform points to pixels.
|
|
94
|
+
*/
|
|
95
|
+
- (void)applyToPixelBuffer:(CVPixelBufferRef)pixelBuffer
|
|
96
|
+
withScanResult:(RJViewHierarchyScanResult *)scanResult
|
|
97
|
+
scale:(CGFloat)scale;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Applies privacy masks to an existing image and returns a new masked image.
|
|
101
|
+
* Thread-safe: Can be called from any thread (designed for background
|
|
102
|
+
* processing).
|
|
103
|
+
*
|
|
104
|
+
* @param image The source image to apply masks to.
|
|
105
|
+
* @param scanResult The pre-computed scan result containing sensitive frames.
|
|
106
|
+
* @param isInBackground Whether the app is in background (full screen mask).
|
|
107
|
+
* @return A new UIImage with privacy masks applied, or the original image if no
|
|
108
|
+
* masking needed.
|
|
109
|
+
*/
|
|
110
|
+
- (UIImage *)applyMasksToImage:(UIImage *)image
|
|
111
|
+
scanResult:(RJViewHierarchyScanResult *)scanResult
|
|
112
|
+
isInBackground:(BOOL)isInBackground;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Finds all sensitive view frames in the window.
|
|
116
|
+
* Returns array of NSValue-wrapped CGRects in window coordinates.
|
|
117
|
+
*/
|
|
118
|
+
- (NSArray<NSValue *> *)findSensitiveFramesInWindow:(UIWindow *)window;
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Returns YES if the last drawMasksForWindow call masked a camera view.
|
|
122
|
+
* Use this to add metadata to frames for dashboard display.
|
|
123
|
+
*/
|
|
124
|
+
@property(nonatomic, readonly) BOOL lastFrameHadCamera;
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Returns YES if the last drawMasksForWindow call masked a text input.
|
|
128
|
+
*/
|
|
129
|
+
@property(nonatomic, readonly) BOOL lastFrameHadTextInput;
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Returns YES if the last drawMasksForWindow call masked a web view.
|
|
133
|
+
*/
|
|
134
|
+
@property(nonatomic, readonly) BOOL lastFrameHadWebView;
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Cleanup method - no-op for this implementation since we don't add overlays.
|
|
138
|
+
*/
|
|
139
|
+
- (void)forceCleanup;
|
|
140
|
+
|
|
141
|
+
#pragma mark - Manual nativeID Masking
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Set of nativeID strings that should be manually masked.
|
|
145
|
+
* Views with matching accessibilityIdentifier will be masked.
|
|
146
|
+
*/
|
|
147
|
+
@property(nonatomic, strong, readonly)
|
|
148
|
+
NSMutableSet<NSString *> *maskedNativeIDs;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Add a nativeID to the manually masked set.
|
|
152
|
+
* The view with this nativeID will be masked in recordings.
|
|
153
|
+
*/
|
|
154
|
+
- (void)addMaskedNativeID:(NSString *)nativeID;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Remove a nativeID from the manually masked set.
|
|
158
|
+
*/
|
|
159
|
+
- (void)removeMaskedNativeID:(NSString *)nativeID;
|
|
160
|
+
|
|
161
|
+
@end
|
|
162
|
+
|
|
163
|
+
NS_ASSUME_NONNULL_END
|