@multiplayer-app/session-recorder-react-native 1.0.1-beta.14 → 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.
Files changed (34) hide show
  1. package/android/src/main/java/com/sessionrecordernative/SessionRecorderNativeModule.kt +9 -17
  2. package/android/src/main/java/com/sessionrecordernative/SessionRecorderNativePackage.kt +1 -1
  3. package/ios/SessionRecorderNative.mm +0 -1
  4. package/ios/SessionRecorderNative.swift +0 -10
  5. package/lib/module/{SessionRecorderNativeSpec.js → NativeSessionRecorderModule.js} +1 -1
  6. package/lib/module/NativeSessionRecorderModule.js.map +1 -0
  7. package/lib/module/NativeSessionRecorderModuleSpec.js +5 -0
  8. package/lib/module/NativeSessionRecorderModuleSpec.js.map +1 -0
  9. package/lib/module/NativeSessionRecorderNative.js +5 -0
  10. package/lib/module/NativeSessionRecorderNative.js.map +1 -0
  11. package/lib/module/native/SessionRecorderNative.js +9 -12
  12. package/lib/module/native/SessionRecorderNative.js.map +1 -1
  13. package/lib/module/services/screenMaskingService.js +1 -1
  14. package/lib/module/services/screenMaskingService.js.map +1 -1
  15. package/lib/typescript/src/{SessionRecorderNativeSpec.d.ts → NativeSessionRecorderModule.d.ts} +13 -13
  16. package/lib/typescript/src/NativeSessionRecorderModule.d.ts.map +1 -0
  17. package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts +25 -0
  18. package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts.map +1 -0
  19. package/lib/typescript/src/NativeSessionRecorderNative.d.ts +25 -0
  20. package/lib/typescript/src/NativeSessionRecorderNative.d.ts.map +1 -0
  21. package/lib/typescript/src/native/SessionRecorderNative.d.ts +3 -1
  22. package/lib/typescript/src/native/SessionRecorderNative.d.ts.map +1 -1
  23. package/lib/typescript/src/services/screenMaskingService.d.ts +1 -1
  24. package/lib/typescript/src/services/screenMaskingService.d.ts.map +1 -1
  25. package/package.json +2 -2
  26. package/react-native.config.js +14 -0
  27. package/src/NativeSessionRecorderModule.ts +33 -0
  28. package/src/NativeSessionRecorderModuleSpec.ts +33 -0
  29. package/src/{SessionRecorderNativeSpec.ts → NativeSessionRecorderNative.ts} +14 -13
  30. package/src/native/SessionRecorderNative.ts +11 -13
  31. package/src/services/screenMaskingService.ts +1 -3
  32. package/android/src/main/java/com/sessionrecordernative/SessionRecorderNativeSpec.kt +0 -39
  33. package/lib/module/SessionRecorderNativeSpec.js.map +0 -1
  34. 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
- SessionRecorderNativeSpec(reactContext) {
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
@@ -57,7 +56,7 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
57
56
 
58
57
 
59
58
  @ReactMethod
60
- override fun captureAndMask(promise: Promise) {
59
+ fun captureAndMask(promise: Promise) {
61
60
  val activity =
62
61
  reactContext.currentActivity
63
62
  ?: return promise.reject("NO_ACTIVITY", "No activity found")
@@ -71,7 +70,7 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
71
70
  }
72
71
 
73
72
  @ReactMethod
74
- override fun captureAndMaskWithOptions(options: ReadableMap, promise: Promise) {
73
+ fun captureAndMaskWithOptions(options: ReadableMap, promise: Promise) {
75
74
  val activity =
76
75
  reactContext.currentActivity
77
76
  ?: return promise.reject("NO_ACTIVITY", "No activity found")
@@ -86,7 +85,7 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
86
85
 
87
86
  // --- Gesture recording API (merged from GestureRecorderModule) ---
88
87
  @ReactMethod
89
- override fun startGestureRecording(promise: Promise) {
88
+ fun startGestureRecording(promise: Promise) {
90
89
  val activity =
91
90
  reactContext.currentActivity
92
91
  ?: return promise.reject("NO_ACTIVITY", "No activity found")
@@ -106,7 +105,7 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
106
105
  }
107
106
 
108
107
  @ReactMethod
109
- override fun stopGestureRecording(promise: Promise) {
108
+ fun stopGestureRecording(promise: Promise) {
110
109
  try {
111
110
  if (!isRecording) {
112
111
  promise.resolve(null)
@@ -122,17 +121,12 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
122
121
  }
123
122
 
124
123
  @ReactMethod
125
- override fun isGestureRecordingActive(promise: Promise) {
124
+ fun isGestureRecordingActive(promise: Promise) {
126
125
  promise.resolve(isRecording)
127
126
  }
128
127
 
129
128
  @ReactMethod
130
- override fun setGestureCallback(callback: Callback) {
131
- this.gestureCallback = callback
132
- }
133
-
134
- @ReactMethod
135
- override fun recordGesture(
129
+ fun recordGesture(
136
130
  gestureType: String,
137
131
  x: Double,
138
132
  y: Double,
@@ -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 {
@@ -364,12 +356,12 @@ class SessionRecorderNativeModule(reactContext: ReactApplicationContext) :
364
356
  }
365
357
 
366
358
  @ReactMethod
367
- override fun addListener(eventName: String) {
359
+ fun addListener(eventName: String) {
368
360
  // Required for RN event emitter contracts
369
361
  }
370
362
 
371
363
  @ReactMethod
372
- override fun removeListeners(count: Int) {
364
+ fun removeListeners(count: Int) {
373
365
  // Required for RN event emitter contracts
374
366
  }
375
367
 
@@ -25,7 +25,7 @@ class SessionRecorderNativePackage : BaseReactPackage() {
25
25
  false, // canOverrideExistingModule
26
26
  false, // needsEagerInit
27
27
  false, // isCxxModule
28
- true // isTurboModule
28
+ false // isTurboModule
29
29
  )
30
30
  moduleInfos
31
31
  }
@@ -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
@@ -2,4 +2,4 @@
2
2
 
3
3
  import { TurboModuleRegistry } from 'react-native';
4
4
  export default TurboModuleRegistry.getEnforcing('SessionRecorderNative');
5
- //# sourceMappingURL=SessionRecorderNativeSpec.js.map
5
+ //# sourceMappingURL=NativeSessionRecorderModule.js.map
@@ -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,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('SessionRecorderNative');
5
+ //# sourceMappingURL=NativeSessionRecorderModuleSpec.js.map
@@ -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,5 @@
1
+ "use strict";
2
+
3
+ import { TurboModuleRegistry } from 'react-native';
4
+ export default TurboModuleRegistry.getEnforcing('SessionRecorderNative');
5
+ //# sourceMappingURL=NativeSessionRecorderNative.js.map
@@ -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":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { Platform, NativeEventEmitter } from 'react-native';
4
- import SessionRecorderNative from "../SessionRecorderNativeSpec.js";
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","setGestureCallback","callback","removeAllListeners","addListener","recordGesture","gestureType","x","y","target","metadata","_eventName","removeListeners","_count","gestureEventEmitter"],"sourceRoot":"../../../src","sources":["native/SessionRecorderNative.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,kBAAkB,QAAQ,cAAc;AAC3D,OAAOC,qBAAqB,MAA0C,iCAA8B;;AAGpG;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,kBAAkBA,CAACC,QAA8B,EAAQ;IACvD,IAAIf,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA;IACA,IAAI;MACFT,qBAAqB,CAACe,kBAAkB,CAACC,QAAe,CAAC;IAC3D,CAAC,CAAC,MAAM,CAAE;IACVb,YAAY,EAAEc,kBAAkB,CAAC,mBAAmB,CAAC;IACrDd,YAAY,EAAEe,WAAW,CAAC,mBAAmB,EAAEF,QAAQ,CAAC;EAC1D,CAAC;EAEDG,aAAaA,CAACC,WAAmB,EAAEC,CAAS,EAAEC,CAAS,EAAEC,MAAe,EAAEC,QAAc,EAAQ;IAC9F,IAAIvB,KAAK,IAAI,CAACD,qBAAqB,EAAE;MACnC,MAAM,IAAIS,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACAT,qBAAqB,CAACmB,aAAa,CAACC,WAAW,EAAEC,CAAC,EAAEC,CAAC,EAAEC,MAAM,EAAEC,QAAQ,CAAC;EAC1E,CAAC;EAEDN,WAAWA,CAACO,UAAkB,EAAQ;IACpC;EAAA,CACD;EAEDC,eAAeA,CAACC,MAAc,EAAQ;IACpC;EAAA;AAEJ,CAAC;AA+BD,eAAepB,yBAAyB;;AAExC;AACA,OAAO,MAAMqB,mBAAmB,GAAGzB,YAAY","ignoreList":[]}
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,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import SessionRecorderNative from "../SessionRecorderNativeSpec.js";
3
+ import SessionRecorderNative from "../native/SessionRecorderNative.js";
4
4
  import { logger } from "../utils/index.js";
5
5
  export class ScreenMaskingService {
6
6
  isAvailable = false;
@@ -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":"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","ignoreList":[]}
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":[]}
@@ -1,16 +1,5 @@
1
1
  import type { TurboModule } from 'react-native';
2
- export interface Spec extends TurboModule {
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=SessionRecorderNativeSpec.d.ts.map
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"}
@@ -1,5 +1,5 @@
1
1
  import { NativeEventEmitter } from 'react-native';
2
- import { type Spec } from '../SessionRecorderNativeSpec';
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,EAAuB,KAAK,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAsBrG,QAAA,MAAM,yBAAyB,EAAE,IA8DhC,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;AAED,eAAe,yBAAyB,CAAC;AAGzC,eAAO,MAAM,mBAAmB,iEAAe,CAAC"}
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,4 +1,4 @@
1
- import { type MaskingOptions } from '../SessionRecorderNativeSpec';
1
+ import { type MaskingOptions } from '../native/SessionRecorderNative';
2
2
  export interface ScreenMaskingConfig {
3
3
  /** Whether screen masking is enabled */
4
4
  enabled: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"screenMaskingService.d.ts","sourceRoot":"","sources":["../../../../src/services/screenMaskingService.ts"],"names":[],"mappings":"AAAA,OAA8B,EAC5B,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAGtC,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"}
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.14",
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": "SessionRecorderNativeSpec",
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,32 +1,33 @@
1
1
  import type { TurboModule } from 'react-native';
2
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
+
3
16
  export interface Spec extends TurboModule {
4
17
  captureAndMask(): Promise<string>;
5
18
  captureAndMaskWithOptions(options: MaskingOptions): Promise<string>;
6
19
  startGestureRecording(): Promise<void>;
7
20
  stopGestureRecording(): Promise<void>;
8
21
  isGestureRecordingActive(): Promise<boolean>;
9
- setGestureCallback(callback: (event: any) => void): void;
10
22
  recordGesture(
11
23
  gestureType: string,
12
24
  x: number,
13
25
  y: number,
14
26
  target?: string,
15
- metadata?: any,
27
+ metadata?: Object,
16
28
  ): void;
17
29
  addListener(eventName: string): void;
18
30
  removeListeners(count: number): void;
19
31
  }
20
32
 
21
- export interface MaskingOptions {
22
- maskTextInputs?: boolean;
23
- maskImages?: boolean;
24
- maskButtons?: boolean;
25
- maskLabels?: boolean;
26
- maskWebViews?: boolean;
27
- maskSandboxedViews?: boolean;
28
- quality?: number;
29
- scale?: number;
30
- }
31
-
32
33
  export default TurboModuleRegistry.getEnforcing<Spec>('SessionRecorderNative');
@@ -1,5 +1,5 @@
1
1
  import { Platform, NativeEventEmitter } from 'react-native';
2
- import SessionRecorderNative, { type MaskingOptions, type Spec } from '../SessionRecorderNativeSpec';
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,39 +0,0 @@
1
- package com.sessionrecordernative
2
-
3
- import com.facebook.react.bridge.ReactApplicationContext
4
- import com.facebook.react.bridge.ReactContextBaseJavaModule
5
- import com.facebook.react.bridge.Promise
6
- import com.facebook.react.bridge.Callback
7
- import com.facebook.react.bridge.ReadableMap
8
- import com.facebook.react.turbomodule.core.interfaces.TurboModule
9
-
10
- /**
11
- * Spec class for SessionRecorderNative TurboModule
12
- * This class defines the interface that React Native expects for TurboModules
13
- */
14
- abstract class SessionRecorderNativeSpec(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext), TurboModule {
15
-
16
- override fun getName(): String {
17
- return NAME
18
- }
19
-
20
- companion object {
21
- const val NAME = "SessionRecorderNative"
22
- }
23
-
24
- abstract fun captureAndMask(promise: Promise)
25
- abstract fun captureAndMaskWithOptions(options: ReadableMap, promise: Promise)
26
- abstract fun startGestureRecording(promise: Promise)
27
- abstract fun stopGestureRecording(promise: Promise)
28
- abstract fun isGestureRecordingActive(promise: Promise)
29
- abstract fun setGestureCallback(callback: Callback)
30
- abstract fun recordGesture(
31
- gestureType: String,
32
- x: Double,
33
- y: Double,
34
- target: String?,
35
- metadata: ReadableMap?
36
- )
37
- abstract fun addListener(eventName: String)
38
- abstract fun removeListeners(count: Int)
39
- }
@@ -1 +0,0 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["SessionRecorderNativeSpec.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA8BlD,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;AAEhD,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"}