@multiplayer-app/session-recorder-react-native 1.0.1-beta.13 → 1.0.1-beta.15
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/src/main/java/com/sessionrecordernative/SessionRecorderNativeModule.kt +1 -9
- package/android/src/main/java/com/sessionrecordernative/SessionRecorderNativePackage.kt +1 -1
- package/ios/SessionRecorderNative.mm +0 -1
- package/ios/SessionRecorderNative.swift +0 -10
- package/lib/module/{SessionRecorderNativeSpec.js → NativeSessionRecorderModule.js} +1 -1
- package/lib/module/NativeSessionRecorderModule.js.map +1 -0
- package/lib/module/NativeSessionRecorderModuleSpec.js +5 -0
- package/lib/module/NativeSessionRecorderModuleSpec.js.map +1 -0
- package/lib/module/NativeSessionRecorderNative.js +5 -0
- package/lib/module/NativeSessionRecorderNative.js.map +1 -0
- package/lib/module/index.js +0 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/native/SessionRecorderNative.js +9 -12
- package/lib/module/native/SessionRecorderNative.js.map +1 -1
- package/lib/module/services/screenMaskingService.js +1 -1
- package/lib/module/services/screenMaskingService.js.map +1 -1
- package/lib/typescript/src/{SessionRecorderNativeSpec.d.ts → NativeSessionRecorderModule.d.ts} +13 -13
- package/lib/typescript/src/NativeSessionRecorderModule.d.ts.map +1 -0
- package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts +25 -0
- package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts.map +1 -0
- package/lib/typescript/src/NativeSessionRecorderNative.d.ts +25 -0
- package/lib/typescript/src/NativeSessionRecorderNative.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +0 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/native/SessionRecorderNative.d.ts +3 -1
- package/lib/typescript/src/native/SessionRecorderNative.d.ts.map +1 -1
- package/lib/typescript/src/services/screenMaskingService.d.ts +1 -1
- package/lib/typescript/src/services/screenMaskingService.d.ts.map +1 -1
- package/package.json +2 -2
- package/react-native.config.js +14 -0
- package/src/NativeSessionRecorderModule.ts +33 -0
- package/src/NativeSessionRecorderModuleSpec.ts +33 -0
- package/src/{SessionRecorderNativeSpec.ts → NativeSessionRecorderNative.ts} +13 -13
- package/src/index.ts +0 -2
- package/src/native/SessionRecorderNative.ts +11 -13
- package/src/services/screenMaskingService.ts +1 -3
- package/lib/module/SessionRecorderNativeSpec.js.map +0 -1
- package/lib/typescript/src/SessionRecorderNativeSpec.d.ts.map +0 -1
|
@@ -25,7 +25,7 @@ import com.facebook.react.module.annotations.ReactModule
|
|
|
25
25
|
|
|
26
26
|
@ReactModule(name = SessionRecorderNativeModule.NAME)
|
|
27
27
|
class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
|
|
28
|
-
|
|
28
|
+
ReactContextBaseJavaModule(reactContext) {
|
|
29
29
|
|
|
30
30
|
override fun getName(): String {
|
|
31
31
|
return NAME
|
|
@@ -43,7 +43,6 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
|
|
|
43
43
|
// Gesture recording state
|
|
44
44
|
private var isRecording = false
|
|
45
45
|
private var rootView: ViewGroup? = null
|
|
46
|
-
private var gestureCallback: Callback? = null
|
|
47
46
|
private var originalWindowCallback: android.view.Window.Callback? = null
|
|
48
47
|
private var initialTouchTime = 0L
|
|
49
48
|
private var initialTouchX = 0f
|
|
@@ -126,11 +125,6 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
|
|
|
126
125
|
promise.resolve(isRecording)
|
|
127
126
|
}
|
|
128
127
|
|
|
129
|
-
@ReactMethod
|
|
130
|
-
fun setGestureCallback(callback: Callback) {
|
|
131
|
-
this.gestureCallback = callback
|
|
132
|
-
}
|
|
133
|
-
|
|
134
128
|
@ReactMethod
|
|
135
129
|
fun recordGesture(
|
|
136
130
|
gestureType: String,
|
|
@@ -150,7 +144,6 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
|
|
|
150
144
|
}
|
|
151
145
|
|
|
152
146
|
sendEvent("onGestureDetected", gestureEvent)
|
|
153
|
-
gestureCallback?.invoke(gestureEvent)
|
|
154
147
|
}
|
|
155
148
|
|
|
156
149
|
private fun setupGestureListener(activity: Activity) {
|
|
@@ -333,7 +326,6 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
|
|
|
333
326
|
}
|
|
334
327
|
|
|
335
328
|
sendEvent("onGestureDetected", gestureEvent)
|
|
336
|
-
gestureCallback?.invoke(gestureEvent)
|
|
337
329
|
}
|
|
338
330
|
|
|
339
331
|
private fun createTapMetadata(): WritableMap {
|
|
@@ -17,7 +17,6 @@ RCT_EXTERN_METHOD(stopGestureRecording:(RCTPromiseResolveBlock)resolve
|
|
|
17
17
|
reject:(RCTPromiseRejectBlock)reject)
|
|
18
18
|
RCT_EXTERN_METHOD(isGestureRecordingActive:(RCTPromiseResolveBlock)resolve
|
|
19
19
|
reject:(RCTPromiseRejectBlock)reject)
|
|
20
|
-
RCT_EXTERN_METHOD(setGestureCallback:(RCTResponseSenderBlock)callback)
|
|
21
20
|
RCT_EXTERN_METHOD(recordGesture:(NSString *)gestureType
|
|
22
21
|
x:(nonnull NSNumber *)x
|
|
23
22
|
y:(nonnull NSNumber *)y
|
|
@@ -120,7 +120,6 @@ class SessionRecorderNative: RCTEventEmitter, UIGestureRecognizerDelegate {
|
|
|
120
120
|
|
|
121
121
|
// MARK: - Gesture recording state
|
|
122
122
|
private var isRecording = false
|
|
123
|
-
private var gestureCallback: RCTResponseSenderBlock?
|
|
124
123
|
private var rootViewController: UIViewController?
|
|
125
124
|
|
|
126
125
|
private var tapGestureRecognizer: UITapGestureRecognizer?
|
|
@@ -168,10 +167,6 @@ class SessionRecorderNative: RCTEventEmitter, UIGestureRecognizerDelegate {
|
|
|
168
167
|
resolve(self.isRecording)
|
|
169
168
|
}
|
|
170
169
|
|
|
171
|
-
@objc func setGestureCallback(_ callback: @escaping RCTResponseSenderBlock) {
|
|
172
|
-
self.gestureCallback = callback
|
|
173
|
-
}
|
|
174
|
-
|
|
175
170
|
@objc func recordGesture(_ gestureType: String, x: NSNumber, y: NSNumber, target: String?, metadata: NSDictionary?) {
|
|
176
171
|
let gestureEvent: [String: Any] = [
|
|
177
172
|
"type": gestureType,
|
|
@@ -183,7 +178,6 @@ class SessionRecorderNative: RCTEventEmitter, UIGestureRecognizerDelegate {
|
|
|
183
178
|
]
|
|
184
179
|
|
|
185
180
|
self.sendEvent(withName: "onGestureDetected", body: gestureEvent)
|
|
186
|
-
if let cb = gestureCallback { cb([gestureEvent]) }
|
|
187
181
|
}
|
|
188
182
|
|
|
189
183
|
private func updateConfiguration(from options: NSDictionary) {
|
|
@@ -653,7 +647,6 @@ class SessionRecorderNative: RCTEventEmitter, UIGestureRecognizerDelegate {
|
|
|
653
647
|
]
|
|
654
648
|
|
|
655
649
|
self.sendEvent(withName: "onGestureDetected", body: gestureEvent)
|
|
656
|
-
if let cb = gestureCallback { cb([gestureEvent]) }
|
|
657
650
|
}
|
|
658
651
|
|
|
659
652
|
@objc private func handlePan(_ gesture: UIPanGestureRecognizer) {
|
|
@@ -693,7 +686,6 @@ class SessionRecorderNative: RCTEventEmitter, UIGestureRecognizerDelegate {
|
|
|
693
686
|
]
|
|
694
687
|
|
|
695
688
|
self.sendEvent(withName: "onGestureDetected", body: gestureEvent)
|
|
696
|
-
if let cb = gestureCallback { cb([gestureEvent]) }
|
|
697
689
|
}
|
|
698
690
|
|
|
699
691
|
@objc private func handleLongPress(_ gesture: UILongPressGestureRecognizer) {
|
|
@@ -722,7 +714,6 @@ class SessionRecorderNative: RCTEventEmitter, UIGestureRecognizerDelegate {
|
|
|
722
714
|
]
|
|
723
715
|
|
|
724
716
|
self.sendEvent(withName: "onGestureDetected", body: gestureEvent)
|
|
725
|
-
if let cb = gestureCallback { cb([gestureEvent]) }
|
|
726
717
|
}
|
|
727
718
|
|
|
728
719
|
@objc private func handlePinch(_ gesture: UIPinchGestureRecognizer) {
|
|
@@ -753,7 +744,6 @@ class SessionRecorderNative: RCTEventEmitter, UIGestureRecognizerDelegate {
|
|
|
753
744
|
]
|
|
754
745
|
|
|
755
746
|
self.sendEvent(withName: "onGestureDetected", body: gestureEvent)
|
|
756
|
-
if let cb = gestureCallback { cb([gestureEvent]) }
|
|
757
747
|
}
|
|
758
748
|
|
|
759
749
|
// MARK: - UIGestureRecognizerDelegate
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeSessionRecorderModule.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,uBAAuB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeSessionRecorderModuleSpec.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,uBAAuB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeSessionRecorderNative.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,uBAAuB,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -6,9 +6,6 @@ export * from '@multiplayer-app/session-recorder-common';
|
|
|
6
6
|
export * from "./context/SessionRecorderContext.js";
|
|
7
7
|
export * from "./context/useSessionRecorderStore.js";
|
|
8
8
|
|
|
9
|
-
// Export TurboModule spec for codegen
|
|
10
|
-
export * from "./SessionRecorderNativeSpec.js";
|
|
11
|
-
|
|
12
9
|
// Export the class for type checking
|
|
13
10
|
export { SessionRecorder };
|
|
14
11
|
// Export the instance as default
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SessionRecorder"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,OAAO,kBAAS;AAChB,OAAOA,eAAe,MAAM,uBAAoB;AAChD,cAAc,0CAA0C;AACxD,cAAc,qCAAkC;AAChD,cAAc,sCAAmC;;
|
|
1
|
+
{"version":3,"names":["SessionRecorder"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,OAAO,kBAAS;AAChB,OAAOA,eAAe,MAAM,uBAAoB;AAChD,cAAc,0CAA0C;AACxD,cAAc,qCAAkC;AAChD,cAAc,sCAAmC;;AAGjD;AACA,SAASA,eAAe;AACxB;AACA,eAAeA,eAAe","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { Platform, NativeEventEmitter } from 'react-native';
|
|
4
|
-
import SessionRecorderNative from "../
|
|
4
|
+
import SessionRecorderNative from "../NativeSessionRecorderModule.js";
|
|
5
5
|
|
|
6
6
|
// Check if we're on web platform
|
|
7
7
|
const isWeb = Platform.OS === 'web';
|
|
@@ -48,17 +48,6 @@ const SafeSessionRecorderNative = {
|
|
|
48
48
|
}
|
|
49
49
|
return SessionRecorderNative.isGestureRecordingActive();
|
|
50
50
|
},
|
|
51
|
-
setGestureCallback(callback) {
|
|
52
|
-
if (isWeb || !SessionRecorderNative) {
|
|
53
|
-
throw new Error('SessionRecorderNative is not available on web platform');
|
|
54
|
-
}
|
|
55
|
-
// Native side will also invoke callback if provided; also subscribe to events here
|
|
56
|
-
try {
|
|
57
|
-
SessionRecorderNative.setGestureCallback(callback);
|
|
58
|
-
} catch {}
|
|
59
|
-
eventEmitter?.removeAllListeners('onGestureDetected');
|
|
60
|
-
eventEmitter?.addListener('onGestureDetected', callback);
|
|
61
|
-
},
|
|
62
51
|
recordGesture(gestureType, x, y, target, metadata) {
|
|
63
52
|
if (isWeb || !SessionRecorderNative) {
|
|
64
53
|
throw new Error('SessionRecorderNative is not available on web platform');
|
|
@@ -72,6 +61,14 @@ const SafeSessionRecorderNative = {
|
|
|
72
61
|
// Required for RN event emitter contracts
|
|
73
62
|
}
|
|
74
63
|
};
|
|
64
|
+
// Helper function to set gesture callback using event emitter pattern
|
|
65
|
+
export function setGestureCallback(callback) {
|
|
66
|
+
if (isWeb || !SessionRecorderNative) {
|
|
67
|
+
throw new Error('SessionRecorderNative is not available on web platform');
|
|
68
|
+
}
|
|
69
|
+
eventEmitter?.removeAllListeners('onGestureDetected');
|
|
70
|
+
eventEmitter?.addListener('onGestureDetected', callback);
|
|
71
|
+
}
|
|
75
72
|
export default SafeSessionRecorderNative;
|
|
76
73
|
|
|
77
74
|
// Export event emitter for gesture events to maintain previous API
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","NativeEventEmitter","SessionRecorderNative","isWeb","OS","eventEmitter","console","warn","info","SafeSessionRecorderNative","captureAndMask","Error","captureAndMaskWithOptions","options","startGestureRecording","stopGestureRecording","isGestureRecordingActive","
|
|
1
|
+
{"version":3,"names":["Platform","NativeEventEmitter","SessionRecorderNative","isWeb","OS","eventEmitter","console","warn","info","SafeSessionRecorderNative","captureAndMask","Error","captureAndMaskWithOptions","options","startGestureRecording","stopGestureRecording","isGestureRecordingActive","recordGesture","gestureType","x","y","target","metadata","addListener","_eventName","removeListeners","_count","setGestureCallback","callback","removeAllListeners","gestureEventEmitter"],"sourceRoot":"../../../src","sources":["native/SessionRecorderNative.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,kBAAkB,QAAQ,cAAc;AAC3D,OAAOC,qBAAqB,MAA0C,mCAAgC;;AAGtG;AACA,MAAMC,KAAK,GAAGH,QAAQ,CAACI,EAAE,KAAK,KAAK;;AAEnC;AACA,IAAIC,YAAY,GAAG,IAAIJ,kBAAkB,CAACC,qBAA4B,CAAC;;AAGvE;AACA,IAAI,CAACA,qBAAqB,IAAI,CAACC,KAAK,EAAE;EACpCG,OAAO,CAACC,IAAI,CACV,+FACF,CAAC;AACH,CAAC,MAAM,IAAIJ,KAAK,EAAE;EAChBG,OAAO,CAACE,IAAI,CACV,wEACF,CAAC;AACH;;AAEA;AACA,MAAMC,yBAA+B,GAAG;EACtC,MAAMC,cAAcA,CAAA,EAAoB;IACtC,IAAIP,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACQ,cAAc,CAAC,CAAC;EAC/C,CAAC;EAED,MAAME,yBAAyBA,CAACC,OAAuB,EAAmB;IACxE,IAAIV,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACU,yBAAyB,CAACC,OAAO,CAAC;EACjE,CAAC;EAED,MAAMC,qBAAqBA,CAAA,EAAkB;IAC3C,IAAIX,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACY,qBAAqB,CAAC,CAAC;EACtD,CAAC;EAED,MAAMC,oBAAoBA,CAAA,EAAkB;IAC1C,IAAIZ,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACa,oBAAoB,CAAC,CAAC;EACrD,CAAC;EAED,MAAMC,wBAAwBA,CAAA,EAAqB;IACjD,IAAIb,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,OAAOT,qBAAqB,CAACc,wBAAwB,CAAC,CAAC;EACzD,CAAC;EAEDC,aAAaA,CAACC,WAAmB,EAAEC,CAAS,EAAEC,CAAS,EAAEC,MAAe,EAAEC,QAAc,EAAQ;IAC9F,IAAInB,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACAT,qBAAqB,CAACe,aAAa,CAACC,WAAW,EAAEC,CAAC,EAAEC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,CAAC;EAC1E,CAAC;EAEDC,WAAWA,CAACC,UAAkB,EAAQ;IACpC;EAAA,CACD;EAEDC,eAAeA,CAACC,MAAc,EAAQ;IACpC;EAAA;AAEJ,CAAC;AA+BD;AACA,OAAO,SAASC,kBAAkBA,CAACC,QAA6C,EAAQ;EACtF,IAAIzB,KAAK,IAAI,CAACD,qBAAqB,EAAE;IACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;EAC3E;EACAN,YAAY,EAAEwB,kBAAkB,CAAC,mBAAmB,CAAC;EACrDxB,YAAY,EAAEkB,WAAW,CAAC,mBAAmB,EAAEK,QAAe,CAAC;AACjE;AAEA,eAAenB,yBAAyB;;AAExC;AACA,OAAO,MAAMqB,mBAAmB,GAAGzB,YAAY","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SessionRecorderNative","logger","ScreenMaskingService","isAvailable","constructor","config","enabled","maskTextInputs","maskImages","maskButtons","maskLabels","maskWebViews","maskSandboxedViews","checkAvailability","captureAndMask","info","warn","error","captureMaskedScreen","options","maskingOptions","maskedImageBase64","captureAndMaskWithOptions","captureMaskedScreenBasic","updateConfig","isScreenMaskingAvailable","getConfig","screenMaskingService"],"sourceRoot":"../../../src","sources":["services/screenMaskingService.ts"],"mappings":";;AAAA,OAAOA,qBAAqB,
|
|
1
|
+
{"version":3,"names":["SessionRecorderNative","logger","ScreenMaskingService","isAvailable","constructor","config","enabled","maskTextInputs","maskImages","maskButtons","maskLabels","maskWebViews","maskSandboxedViews","checkAvailability","captureAndMask","info","warn","error","captureMaskedScreen","options","maskingOptions","maskedImageBase64","captureAndMaskWithOptions","captureMaskedScreenBasic","updateConfig","isScreenMaskingAvailable","getConfig","screenMaskingService"],"sourceRoot":"../../../src","sources":["services/screenMaskingService.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/typescript/src/{SessionRecorderNativeSpec.d.ts → NativeSessionRecorderModule.d.ts}
RENAMED
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
import type { TurboModule } from 'react-native';
|
|
2
|
-
export
|
|
3
|
-
captureAndMask(): Promise<string>;
|
|
4
|
-
captureAndMaskWithOptions(options: MaskingOptions): Promise<string>;
|
|
5
|
-
startGestureRecording(): Promise<void>;
|
|
6
|
-
stopGestureRecording(): Promise<void>;
|
|
7
|
-
isGestureRecordingActive(): Promise<boolean>;
|
|
8
|
-
setGestureCallback(callback: (event: any) => void): void;
|
|
9
|
-
recordGesture(gestureType: string, x: number, y: number, target?: string, metadata?: any): void;
|
|
10
|
-
addListener(eventName: string): void;
|
|
11
|
-
removeListeners(count: number): void;
|
|
12
|
-
}
|
|
13
|
-
export interface MaskingOptions {
|
|
2
|
+
export type MaskingOptions = Readonly<{
|
|
14
3
|
maskTextInputs?: boolean;
|
|
15
4
|
maskImages?: boolean;
|
|
16
5
|
maskButtons?: boolean;
|
|
@@ -19,7 +8,18 @@ export interface MaskingOptions {
|
|
|
19
8
|
maskSandboxedViews?: boolean;
|
|
20
9
|
quality?: number;
|
|
21
10
|
scale?: number;
|
|
11
|
+
noCaptureLabel?: string;
|
|
12
|
+
}>;
|
|
13
|
+
export interface Spec extends TurboModule {
|
|
14
|
+
captureAndMask(): Promise<string>;
|
|
15
|
+
captureAndMaskWithOptions(options: MaskingOptions): Promise<string>;
|
|
16
|
+
startGestureRecording(): Promise<void>;
|
|
17
|
+
stopGestureRecording(): Promise<void>;
|
|
18
|
+
isGestureRecordingActive(): Promise<boolean>;
|
|
19
|
+
recordGesture(gestureType: string, x: number, y: number, target?: string, metadata?: Object): void;
|
|
20
|
+
addListener(eventName: string): void;
|
|
21
|
+
removeListeners(count: number): void;
|
|
22
22
|
}
|
|
23
23
|
declare const _default: Spec;
|
|
24
24
|
export default _default;
|
|
25
|
-
//# sourceMappingURL=
|
|
25
|
+
//# sourceMappingURL=NativeSessionRecorderModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeSessionRecorderModule.d.ts","sourceRoot":"","sources":["../../../src/NativeSessionRecorderModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAAC;IACR,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;wBAEiF,IAAI;AAAtF,wBAAuF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
export type MaskingOptions = Readonly<{
|
|
3
|
+
maskTextInputs?: boolean;
|
|
4
|
+
maskImages?: boolean;
|
|
5
|
+
maskButtons?: boolean;
|
|
6
|
+
maskLabels?: boolean;
|
|
7
|
+
maskWebViews?: boolean;
|
|
8
|
+
maskSandboxedViews?: boolean;
|
|
9
|
+
quality?: number;
|
|
10
|
+
scale?: number;
|
|
11
|
+
noCaptureLabel?: string;
|
|
12
|
+
}>;
|
|
13
|
+
export interface Spec extends TurboModule {
|
|
14
|
+
captureAndMask(): Promise<string>;
|
|
15
|
+
captureAndMaskWithOptions(options: MaskingOptions): Promise<string>;
|
|
16
|
+
startGestureRecording(): Promise<void>;
|
|
17
|
+
stopGestureRecording(): Promise<void>;
|
|
18
|
+
isGestureRecordingActive(): Promise<boolean>;
|
|
19
|
+
recordGesture(gestureType: string, x: number, y: number, target?: string, metadata?: Object): void;
|
|
20
|
+
addListener(eventName: string): void;
|
|
21
|
+
removeListeners(count: number): void;
|
|
22
|
+
}
|
|
23
|
+
declare const _default: Spec;
|
|
24
|
+
export default _default;
|
|
25
|
+
//# sourceMappingURL=NativeSessionRecorderModuleSpec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeSessionRecorderModuleSpec.d.ts","sourceRoot":"","sources":["../../../src/NativeSessionRecorderModuleSpec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAAC;IACR,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;wBAEiF,IAAI;AAAtF,wBAAuF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
export type MaskingOptions = Readonly<{
|
|
3
|
+
maskTextInputs?: boolean;
|
|
4
|
+
maskImages?: boolean;
|
|
5
|
+
maskButtons?: boolean;
|
|
6
|
+
maskLabels?: boolean;
|
|
7
|
+
maskWebViews?: boolean;
|
|
8
|
+
maskSandboxedViews?: boolean;
|
|
9
|
+
quality?: number;
|
|
10
|
+
scale?: number;
|
|
11
|
+
noCaptureLabel?: string;
|
|
12
|
+
}>;
|
|
13
|
+
export interface Spec extends TurboModule {
|
|
14
|
+
captureAndMask(): Promise<string>;
|
|
15
|
+
captureAndMaskWithOptions(options: MaskingOptions): Promise<string>;
|
|
16
|
+
startGestureRecording(): Promise<void>;
|
|
17
|
+
stopGestureRecording(): Promise<void>;
|
|
18
|
+
isGestureRecordingActive(): Promise<boolean>;
|
|
19
|
+
recordGesture(gestureType: string, x: number, y: number, target?: string, metadata?: Object): void;
|
|
20
|
+
addListener(eventName: string): void;
|
|
21
|
+
removeListeners(count: number): void;
|
|
22
|
+
}
|
|
23
|
+
declare const _default: Spec;
|
|
24
|
+
export default _default;
|
|
25
|
+
//# sourceMappingURL=NativeSessionRecorderNative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeSessionRecorderNative.d.ts","sourceRoot":"","sources":["../../../src/NativeSessionRecorderNative.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAAC;IACR,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAA+E"}
|
|
@@ -3,7 +3,6 @@ import SessionRecorder from './session-recorder';
|
|
|
3
3
|
export * from '@multiplayer-app/session-recorder-common';
|
|
4
4
|
export * from './context/SessionRecorderContext';
|
|
5
5
|
export * from './context/useSessionRecorderStore';
|
|
6
|
-
export * from './SessionRecorderNativeSpec';
|
|
7
6
|
export { SessionRecorder };
|
|
8
7
|
export default SessionRecorder;
|
|
9
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,CAAC;AACjB,OAAO,eAAe,MAAM,oBAAoB,CAAC;AACjD,cAAc,0CAA0C,CAAC;AACzD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAIlD,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,eAAe,eAAe,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NativeEventEmitter } from 'react-native';
|
|
2
|
-
import { type Spec } from '../
|
|
2
|
+
import { type MaskingOptions, type Spec } from '../NativeSessionRecorderModule';
|
|
3
3
|
declare const SafeSessionRecorderNative: Spec;
|
|
4
4
|
export interface NativeGestureEvent {
|
|
5
5
|
type: 'tap' | 'pan_start' | 'pan_move' | 'pan_end' | 'long_press' | 'pinch' | 'swipe';
|
|
@@ -22,6 +22,8 @@ export interface NativeGestureEvent {
|
|
|
22
22
|
distance?: number;
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
+
export declare function setGestureCallback(callback: (event: NativeGestureEvent) => void): void;
|
|
25
26
|
export default SafeSessionRecorderNative;
|
|
26
27
|
export declare const gestureEventEmitter: NativeEventEmitter<Readonly<Record<string, readonly Object[]>>>;
|
|
28
|
+
export type { MaskingOptions };
|
|
27
29
|
//# sourceMappingURL=SessionRecorderNative.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRecorderNative.d.ts","sourceRoot":"","sources":["../../../../src/native/SessionRecorderNative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAA8B,
|
|
1
|
+
{"version":3,"file":"SessionRecorderNative.d.ts","sourceRoot":"","sources":["../../../../src/native/SessionRecorderNative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAA8B,EAAE,KAAK,cAAc,EAAE,KAAK,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAsBvG,QAAA,MAAM,yBAAyB,EAAE,IAkDhC,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EACF,KAAK,GACL,WAAW,GACX,UAAU,GACV,SAAS,GACT,YAAY,GACZ,OAAO,GACP,OAAO,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,IAAI,CAMtF;AAED,eAAe,yBAAyB,CAAC;AAGzC,eAAO,MAAM,mBAAmB,iEAAe,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenMaskingService.d.ts","sourceRoot":"","sources":["../../../../src/services/screenMaskingService.ts"],"names":[],"mappings":"AAAA,OAA8B,
|
|
1
|
+
{"version":3,"file":"screenMaskingService.d.ts","sourceRoot":"","sources":["../../../../src/services/screenMaskingService.ts"],"names":[],"mappings":"AAAA,OAA8B,EAAE,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAG7F,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yCAAyC;IACzC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0FAA0F;IAC1F,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,WAAW,CAAkB;gBAGnC,MAAM,GAAE,mBAQP;IAMH;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6BzB;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA2B1E;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsBxD;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAKxD;;OAEG;IACH,wBAAwB,IAAI,OAAO;IAInC;;OAEG;IACH,SAAS,IAAI,mBAAmB;CAGjC;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplayer-app/session-recorder-react-native",
|
|
3
|
-
"version": "1.0.1-beta.
|
|
3
|
+
"version": "1.0.1-beta.15",
|
|
4
4
|
"description": "Multiplayer Fullstack Session Recorder for React Native",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Multiplayer Software, Inc.",
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
]
|
|
197
197
|
},
|
|
198
198
|
"codegenConfig": {
|
|
199
|
-
"name": "
|
|
199
|
+
"name": "NativeSessionRecorderModule",
|
|
200
200
|
"type": "modules",
|
|
201
201
|
"jsSrcsDir": "src",
|
|
202
202
|
"android": {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
dependency: {
|
|
3
|
+
platforms: {
|
|
4
|
+
android: {
|
|
5
|
+
sourceDir: './android',
|
|
6
|
+
packageImportPath:
|
|
7
|
+
'import com.sessionrecordernative.SessionRecorderNativePackage;',
|
|
8
|
+
},
|
|
9
|
+
ios: {
|
|
10
|
+
podspecPath: './SessionRecorderNative.podspec',
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export type MaskingOptions = Readonly<{
|
|
5
|
+
maskTextInputs?: boolean;
|
|
6
|
+
maskImages?: boolean;
|
|
7
|
+
maskButtons?: boolean;
|
|
8
|
+
maskLabels?: boolean;
|
|
9
|
+
maskWebViews?: boolean;
|
|
10
|
+
maskSandboxedViews?: boolean;
|
|
11
|
+
quality?: number;
|
|
12
|
+
scale?: number;
|
|
13
|
+
noCaptureLabel?: string;
|
|
14
|
+
}>;
|
|
15
|
+
|
|
16
|
+
export interface Spec extends TurboModule {
|
|
17
|
+
captureAndMask(): Promise<string>;
|
|
18
|
+
captureAndMaskWithOptions(options: MaskingOptions): Promise<string>;
|
|
19
|
+
startGestureRecording(): Promise<void>;
|
|
20
|
+
stopGestureRecording(): Promise<void>;
|
|
21
|
+
isGestureRecordingActive(): Promise<boolean>;
|
|
22
|
+
recordGesture(
|
|
23
|
+
gestureType: string,
|
|
24
|
+
x: number,
|
|
25
|
+
y: number,
|
|
26
|
+
target?: string,
|
|
27
|
+
metadata?: Object,
|
|
28
|
+
): void;
|
|
29
|
+
addListener(eventName: string): void;
|
|
30
|
+
removeListeners(count: number): void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('SessionRecorderNative') as Spec;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export type MaskingOptions = Readonly<{
|
|
5
|
+
maskTextInputs?: boolean;
|
|
6
|
+
maskImages?: boolean;
|
|
7
|
+
maskButtons?: boolean;
|
|
8
|
+
maskLabels?: boolean;
|
|
9
|
+
maskWebViews?: boolean;
|
|
10
|
+
maskSandboxedViews?: boolean;
|
|
11
|
+
quality?: number;
|
|
12
|
+
scale?: number;
|
|
13
|
+
noCaptureLabel?: string;
|
|
14
|
+
}>;
|
|
15
|
+
|
|
16
|
+
export interface Spec extends TurboModule {
|
|
17
|
+
captureAndMask(): Promise<string>;
|
|
18
|
+
captureAndMaskWithOptions(options: MaskingOptions): Promise<string>;
|
|
19
|
+
startGestureRecording(): Promise<void>;
|
|
20
|
+
stopGestureRecording(): Promise<void>;
|
|
21
|
+
isGestureRecordingActive(): Promise<boolean>;
|
|
22
|
+
recordGesture(
|
|
23
|
+
gestureType: string,
|
|
24
|
+
x: number,
|
|
25
|
+
y: number,
|
|
26
|
+
target?: string,
|
|
27
|
+
metadata?: Object,
|
|
28
|
+
): void;
|
|
29
|
+
addListener(eventName: string): void;
|
|
30
|
+
removeListeners(count: number): void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('SessionRecorderNative') as Spec;
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import type { TurboModule } from 'react-native';
|
|
2
2
|
import { TurboModuleRegistry } from 'react-native';
|
|
3
3
|
|
|
4
|
+
export type MaskingOptions = Readonly<{
|
|
5
|
+
maskTextInputs?: boolean;
|
|
6
|
+
maskImages?: boolean;
|
|
7
|
+
maskButtons?: boolean;
|
|
8
|
+
maskLabels?: boolean;
|
|
9
|
+
maskWebViews?: boolean;
|
|
10
|
+
maskSandboxedViews?: boolean;
|
|
11
|
+
quality?: number;
|
|
12
|
+
scale?: number;
|
|
13
|
+
noCaptureLabel?: string;
|
|
14
|
+
}>;
|
|
15
|
+
|
|
4
16
|
export interface Spec extends TurboModule {
|
|
5
17
|
captureAndMask(): Promise<string>;
|
|
6
18
|
captureAndMaskWithOptions(options: MaskingOptions): Promise<string>;
|
|
7
19
|
startGestureRecording(): Promise<void>;
|
|
8
20
|
stopGestureRecording(): Promise<void>;
|
|
9
21
|
isGestureRecordingActive(): Promise<boolean>;
|
|
10
|
-
setGestureCallback(callback: (event: any) => void): void;
|
|
11
22
|
recordGesture(
|
|
12
23
|
gestureType: string,
|
|
13
24
|
x: number,
|
|
14
25
|
y: number,
|
|
15
26
|
target?: string,
|
|
16
|
-
metadata?:
|
|
27
|
+
metadata?: Object,
|
|
17
28
|
): void;
|
|
18
29
|
addListener(eventName: string): void;
|
|
19
30
|
removeListeners(count: number): void;
|
|
20
31
|
}
|
|
21
32
|
|
|
22
|
-
export interface MaskingOptions {
|
|
23
|
-
maskTextInputs?: boolean;
|
|
24
|
-
maskImages?: boolean;
|
|
25
|
-
maskButtons?: boolean;
|
|
26
|
-
maskLabels?: boolean;
|
|
27
|
-
maskWebViews?: boolean;
|
|
28
|
-
maskSandboxedViews?: boolean;
|
|
29
|
-
quality?: number;
|
|
30
|
-
scale?: number;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
33
|
export default TurboModuleRegistry.getEnforcing<Spec>('SessionRecorderNative');
|
package/src/index.ts
CHANGED
|
@@ -4,8 +4,6 @@ export * from '@multiplayer-app/session-recorder-common';
|
|
|
4
4
|
export * from './context/SessionRecorderContext';
|
|
5
5
|
export * from './context/useSessionRecorderStore';
|
|
6
6
|
|
|
7
|
-
// Export TurboModule spec for codegen
|
|
8
|
-
export * from './SessionRecorderNativeSpec';
|
|
9
7
|
|
|
10
8
|
// Export the class for type checking
|
|
11
9
|
export { SessionRecorder };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Platform, NativeEventEmitter } from 'react-native';
|
|
2
|
-
import SessionRecorderNative, { type MaskingOptions, type Spec } from '../
|
|
2
|
+
import SessionRecorderNative, { type MaskingOptions, type Spec } from '../NativeSessionRecorderModule';
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
// Check if we're on web platform
|
|
@@ -57,18 +57,6 @@ const SafeSessionRecorderNative: Spec = {
|
|
|
57
57
|
return SessionRecorderNative.isGestureRecordingActive();
|
|
58
58
|
},
|
|
59
59
|
|
|
60
|
-
setGestureCallback(callback: (event: any) => void): void {
|
|
61
|
-
if (isWeb || !SessionRecorderNative) {
|
|
62
|
-
throw new Error('SessionRecorderNative is not available on web platform');
|
|
63
|
-
}
|
|
64
|
-
// Native side will also invoke callback if provided; also subscribe to events here
|
|
65
|
-
try {
|
|
66
|
-
SessionRecorderNative.setGestureCallback(callback as any);
|
|
67
|
-
} catch { }
|
|
68
|
-
eventEmitter?.removeAllListeners('onGestureDetected');
|
|
69
|
-
eventEmitter?.addListener('onGestureDetected', callback);
|
|
70
|
-
},
|
|
71
|
-
|
|
72
60
|
recordGesture(gestureType: string, x: number, y: number, target?: string, metadata?: any): void {
|
|
73
61
|
if (isWeb || !SessionRecorderNative) {
|
|
74
62
|
throw new Error('SessionRecorderNative is not available on web platform');
|
|
@@ -114,7 +102,17 @@ export interface NativeGestureEvent {
|
|
|
114
102
|
};
|
|
115
103
|
}
|
|
116
104
|
|
|
105
|
+
// Helper function to set gesture callback using event emitter pattern
|
|
106
|
+
export function setGestureCallback(callback: (event: NativeGestureEvent) => void): void {
|
|
107
|
+
if (isWeb || !SessionRecorderNative) {
|
|
108
|
+
throw new Error('SessionRecorderNative is not available on web platform');
|
|
109
|
+
}
|
|
110
|
+
eventEmitter?.removeAllListeners('onGestureDetected');
|
|
111
|
+
eventEmitter?.addListener('onGestureDetected', callback as any);
|
|
112
|
+
}
|
|
113
|
+
|
|
117
114
|
export default SafeSessionRecorderNative;
|
|
118
115
|
|
|
119
116
|
// Export event emitter for gesture events to maintain previous API
|
|
120
117
|
export const gestureEventEmitter = eventEmitter;
|
|
118
|
+
export type { MaskingOptions };
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import SessionRecorderNative, {
|
|
2
|
-
type MaskingOptions,
|
|
3
|
-
} from '../SessionRecorderNativeSpec';
|
|
1
|
+
import SessionRecorderNative, { type MaskingOptions } from '../native/SessionRecorderNative';
|
|
4
2
|
import { logger } from '../utils';
|
|
5
3
|
|
|
6
4
|
export interface ScreenMaskingConfig {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["SessionRecorderNativeSpec.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+BlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,uBAAuB,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRecorderNativeSpec.d.ts","sourceRoot":"","sources":["../../../src/SessionRecorderNativeSpec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpE,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAC;IACzD,aAAa,CACX,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,GAAG,GACb,IAAI,CAAC;IACR,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;;AAED,wBAA+E"}
|