@multiplayer-app/session-recorder-react-native 1.3.4 → 1.3.6

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.
@@ -3,8 +3,7 @@
3
3
  import { trace, SpanStatusCode } from '@opentelemetry/api';
4
4
  import { Dimensions, Platform } from 'react-native';
5
5
  import { createRecordingMetaEvent, createFullSnapshotEvent, createIncrementalSnapshotWithImageUpdate as createIncrementalSnapshotUtil, generateScreenHash, logger } from "../utils/index.js";
6
- import { screenMaskingService } from "../services/screenMaskingService.js";
7
- import { captureRef } from 'react-native-view-shot';
6
+ import { screenRecordingService } from "../services/screenRecordingService.js";
8
7
  const isWeb = Platform.OS === 'web';
9
8
  export class ScreenRecorder {
10
9
  isRecording = false;
@@ -12,29 +11,29 @@ export class ScreenRecorder {
12
11
  captureCount = 0;
13
12
  maxCaptures = 100; // Limit captures to prevent memory issues
14
13
  captureQuality = 0.2;
15
- captureScale = 0.66;
14
+ captureScale = 0.33;
16
15
  captureFormat = 'jpg';
17
16
  screenDimensions = null;
18
17
  nodeIdCounter = 1;
19
- viewShotRef = null;
20
18
  lastScreenCapture = null;
21
19
  lastScreenHash = null;
22
20
  enableChangeDetection = true;
23
21
  hashSampleSize = 100;
24
22
  currentImageNodeId = null;
23
+ viewShotRef = null;
25
24
  init(config, eventRecorder) {
26
25
  this.config = config;
27
26
  this.eventRecorder = eventRecorder;
28
27
  this._getScreenDimensions();
29
28
 
30
29
  // Initialize masking configuration
31
- this.maskingConfig = {
30
+ this.recordingConfig = {
32
31
  enabled: true,
33
32
  ...this.config.masking
34
33
  };
35
34
 
36
35
  // Update the masking service configuration
37
- screenMaskingService.updateConfig(this.maskingConfig);
36
+ screenRecordingService.updateConfig(this.recordingConfig);
38
37
  }
39
38
  start() {
40
39
  this.isRecording = true;
@@ -131,37 +130,39 @@ export class ScreenRecorder {
131
130
  }
132
131
 
133
132
  // Try native masking first if available
134
- if (screenMaskingService.isScreenMaskingAvailable()) {
133
+ if (screenRecordingService.isScreenRecordingAvailable()) {
135
134
  logger.info('ScreenRecorder', 'Using native masking for screen capture');
136
- const maskedImage = await screenMaskingService.captureMaskedScreen({
135
+ const recordingImage = await screenRecordingService.captureMaskedScreen({
137
136
  quality: this.captureQuality,
138
137
  scale: this.captureScale
139
138
  });
140
- if (maskedImage) {
141
- return maskedImage;
139
+ if (recordingImage) {
140
+ return recordingImage;
142
141
  }
143
142
  logger.warn('ScreenRecorder', 'Native masking failed, falling back to view-shot');
144
143
  }
145
144
 
146
- // Fallback to react-native-view-shot
145
+ // // Fallback to react-native-view-shot
147
146
  if (!this.viewShotRef) {
148
147
  logger.warn('ScreenRecorder', 'ViewShot ref not available for screen capture');
149
148
  return null;
150
149
  }
150
+ return null;
151
151
 
152
- // Check if captureRef is available
153
- if (!captureRef) {
154
- logger.warn('ScreenRecorder', 'react-native-view-shot not available');
155
- return null;
156
- }
152
+ // // Check if captureRef is available
153
+ // if (!captureRef) {
154
+ // logger.warn('ScreenRecorder', 'react-native-view-shot not available');
155
+ // return null;
156
+ // }
157
157
 
158
- // Capture the screen using react-native-view-shot
159
- const result = await captureRef(this.viewShotRef, {
160
- format: this.captureFormat,
161
- quality: this.captureQuality,
162
- result: 'base64'
163
- });
164
- return result;
158
+ // // Capture the screen using react-native-view-shot
159
+ // const result = await captureRef(this.viewShotRef, {
160
+ // format: this.captureFormat,
161
+ // quality: this.captureQuality,
162
+ // result: 'base64',
163
+ // });
164
+
165
+ // return result;
165
166
  } catch (error) {
166
167
  logger.error('ScreenRecorder', 'Failed to capture screen. Make sure react-native-view-shot is properly installed and linked:', error);
167
168
  return null;
@@ -315,18 +316,6 @@ export class ScreenRecorder {
315
316
  // Failed to record error span - silently continue
316
317
  }
317
318
  }
318
- async captureSpecificElement(elementRef, _options) {
319
- try {
320
- if (isWeb || !captureRef) {
321
- logger.warn('ScreenRecorder', 'Element capture not available on web platform');
322
- return null;
323
- }
324
- return await captureRef(elementRef);
325
- } catch (error) {
326
- // Failed to capture specific element - silently continue
327
- return null;
328
- }
329
- }
330
319
 
331
320
  // Configuration methods
332
321
  setCaptureInterval(intervalMs) {
@@ -1 +1 @@
1
- {"version":3,"names":["trace","SpanStatusCode","Dimensions","Platform","createRecordingMetaEvent","createFullSnapshotEvent","createIncrementalSnapshotWithImageUpdate","createIncrementalSnapshotUtil","generateScreenHash","logger","screenMaskingService","captureRef","isWeb","OS","ScreenRecorder","isRecording","events","captureCount","maxCaptures","captureQuality","captureScale","captureFormat","screenDimensions","nodeIdCounter","viewShotRef","lastScreenCapture","lastScreenHash","enableChangeDetection","hashSampleSize","currentImageNodeId","init","config","eventRecorder","_getScreenDimensions","maskingConfig","enabled","masking","updateConfig","start","info","recordEvent","_startPeriodicCapture","_captureScreen","stop","_stopPeriodicCapture","pause","resume","get","error","width","height","captureInterval","clearInterval","setInterval","undefined","timestamp","base64Image","_captureScreenBase64","hasChanged","_hasScreenChanged","success","updateScreenWithIncrementalSnapshot","_createAndEmitFullSnapshotEvent","_generateScreenHash","_recordScreenCaptureError","warn","isScreenMaskingAvailable","maskedImage","captureMaskedScreen","quality","scale","result","format","fullSnapshotEvent","createFullSnapshot","Error","current","incrementalEvent","forceFullSnapshot","currentBase64","currentHash","_sendEvent","_event","_recordOpenTelemetrySpan","event","span","getTracer","startSpan","type","attributes","metadata","Object","entries","forEach","key","value","setAttribute","String","setStatus","code","OK","end","name","message","Date","now","ERROR","recordException","spanError","captureSpecificElement","elementRef","_options","setCaptureInterval","intervalMs","setCaptureQuality","Math","max","min","setCaptureFormat","setMaxCaptures","setChangeDetection","setHashSampleSize","size","recordScreenPerformance","screenName","loadTime","performance","push","recordScreenError","errorType","errorMessage","getEvents","clearEvents","getScreenStats","stats","totalCaptures","totalEvents","length","averageCaptureTime","successRate","captureTimes","map","captureTime","filter","time","reduce","a","b","successfulCaptures","dataUrl","isRecordingEnabled","getConfiguration","shutdown","setViewShotRef","ref","forceCapture"],"sourceRoot":"../../../src","sources":["recorder/screenRecorder.ts"],"mappings":";;AAMA,SAASA,KAAK,EAAEC,cAAc,QAAQ,oBAAoB;AAC1D,SAASC,UAAU,EAAEC,QAAQ,QAAQ,cAAc;AACnD,SACEC,wBAAwB,EACxBC,uBAAuB,EACvBC,wCAAwC,IAAIC,6BAA6B,EACzEC,kBAAkB,EAClBC,MAAM,QACD,mBAAU;AACjB,SACEC,oBAAoB,QAEf,qCAAkC;AACzC,SAASC,UAAU,QAAQ,wBAAwB;AACnD,MAAMC,KAAK,GAAGT,QAAQ,CAACU,EAAE,KAAK,KAAK;AAEnC,OAAO,MAAMC,cAAc,CAA0B;EAE3CC,WAAW,GAAG,KAAK;EACnBC,MAAM,GAAkB,EAAE;EAE1BC,YAAY,GAAW,CAAC;EACxBC,WAAW,GAAW,GAAG,CAAC,CAAC;EAC3BC,cAAc,GAAW,GAAG;EAC5BC,YAAY,GAAW,IAAI;EAC3BC,aAAa,GAAkB,KAAK;EACpCC,gBAAgB,GAA6C,IAAI;EAEjEC,aAAa,GAAW,CAAC;EACzBC,WAAW,GAAQ,IAAI;EACvBC,iBAAiB,GAAkB,IAAI;EACvCC,cAAc,GAAkB,IAAI;EACpCC,qBAAqB,GAAY,IAAI;EACrCC,cAAc,GAAW,GAAG;EAC5BC,kBAAkB,GAAkB,IAAI;EAGhDC,IAAIA,CAACC,MAAsB,EAAEC,aAA6B,EAAQ;IAChE,IAAI,CAACD,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,aAAa,GAAGA,aAAa;IAClC,IAAI,CAACC,oBAAoB,CAAC,CAAC;;IAE3B;IACA,IAAI,CAACC,aAAa,GAAG;MACnBC,OAAO,EAAE,IAAI;MACb,GAAG,IAAI,CAACJ,MAAM,CAACK;IACjB,CAAC;;IAED;IACA1B,oBAAoB,CAAC2B,YAAY,CAAC,IAAI,CAACH,aAAa,CAAC;EACvD;EAEAI,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACvB,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,MAAM,GAAG,EAAE;IAChB,IAAI,CAACC,YAAY,GAAG,CAAC;IACrB,IAAI,CAACQ,iBAAiB,GAAG,IAAI;IAC7B,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACG,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAChCpB,MAAM,CAAC8B,IAAI,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;IACzD;;IAEA,IAAI,CAACC,WAAW,CAACpC,wBAAwB,CAAC,CAAC,CAAC;IAE5C,IAAI,CAACqC,qBAAqB,CAAC,CAAC;;IAE5B;IACA,IAAI,CAACC,cAAc,CAAC,CAAC;;IAErB;EACF;EAEAC,IAAIA,CAAA,EAAS;IACX,IAAI,CAAC5B,WAAW,GAAG,KAAK;IACxB,IAAI,CAAC6B,oBAAoB,CAAC,CAAC;IAC3B;EACF;EAEAC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAAC9B,WAAW,GAAG,KAAK;IACxB,IAAI,CAAC6B,oBAAoB,CAAC,CAAC;EAC7B;EAEAE,MAAMA,CAAA,EAAS;IACb,IAAI,CAAC/B,WAAW,GAAG,IAAI;IACvB;EACF;EAEQkB,oBAAoBA,CAAA,EAAS;IACnC,IAAI;MACF,IAAI,CAACX,gBAAgB,GAAGpB,UAAU,CAAC6C,GAAG,CAAC,QAAQ,CAAC;IAClD,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd;MACA,IAAI,CAAC1B,gBAAgB,GAAG;QAAE2B,KAAK,EAAE,GAAG;QAAEC,MAAM,EAAE;MAAI,CAAC,CAAC,CAAC;IACvD;EACF;EAEQT,qBAAqBA,CAAA,EAAS;IACpC,IAAI,IAAI,CAACU,eAAe,EAAE;MACxBC,aAAa,CAAC,IAAI,CAACD,eAAe,CAAC;IACrC;;IAEA;IACA,IAAI,CAACA,eAAe,GAAGE,WAAW,CAAC,MAAM;MACvC,IAAI,CAACX,cAAc,CAAC,CAAC;IACvB,CAAC,EAAE,IAAI,CAAC;EACV;EAEQE,oBAAoBA,CAAA,EAAS;IACnC,IAAI,IAAI,CAACO,eAAe,EAAE;MACxBC,aAAa,CAAC,IAAI,CAACD,eAAe,CAAC;MACnC,IAAI,CAACA,eAAe,GAAGG,SAAS;IAClC;EACF;EAEA,MAAcZ,cAAcA,CAACa,SAAkB,EAAiB;IAC9D,IAAI,CAAC,IAAI,CAACxC,WAAW,IAAI,IAAI,CAACE,YAAY,IAAI,IAAI,CAACC,WAAW,EAAE;IAEhE,IAAI;MACF,MAAMsC,WAAW,GAAG,MAAM,IAAI,CAACC,oBAAoB,CAAC,CAAC;MAErD,IAAID,WAAW,EAAE;QACf;QACA,MAAME,UAAU,GAAG,IAAI,CAAC/B,qBAAqB,GACzC,IAAI,CAACgC,iBAAiB,CAACH,WAAW,CAAC,GACnC,IAAI;QAER,IAAIE,UAAU,EAAE;UACd;UACA,IAAI,IAAI,CAAC7B,kBAAkB,KAAK,IAAI,IAAI,IAAI,CAACJ,iBAAiB,EAAE;YAC9D,MAAMmC,OAAO,GAAG,IAAI,CAACC,mCAAmC,CACtDL,WAAW,EACXD,SACF,CAAC;YACD,IAAI,CAACK,OAAO,EAAE;cACZ;cACA,IAAI,CAACE,+BAA+B,CAACN,WAAW,EAAED,SAAS,CAAC;YAC9D;UACF,CAAC,MAAM;YACL;YACA,IAAI,CAACO,+BAA+B,CAACN,WAAW,EAAED,SAAS,CAAC;UAC9D;UAEA,IAAI,CAAC9B,iBAAiB,GAAG+B,WAAW;UACpC,IAAI,CAAC9B,cAAc,GAAG,IAAI,CAACqC,mBAAmB,CAACP,WAAW,CAAC;UAC3D,IAAI,CAACvC,YAAY,EAAE;QACrB;MACF;IACF,CAAC,CAAC,OAAO+B,KAAK,EAAE;MACd,IAAI,CAACgB,yBAAyB,CAAChB,KAAc,CAAC;IAChD;EACF;EAEA,MAAcS,oBAAoBA,CAAA,EAA2B;IAC3D,IAAI;MACF;MACA,IAAI7C,KAAK,EAAE;QACTH,MAAM,CAACwD,IAAI,CACT,gBAAgB,EAChB,8CACF,CAAC;QACD,OAAO,IAAI;MACb;;MAEA;MACA,IAAIvD,oBAAoB,CAACwD,wBAAwB,CAAC,CAAC,EAAE;QACnDzD,MAAM,CAAC8B,IAAI,CACT,gBAAgB,EAChB,yCACF,CAAC;QACD,MAAM4B,WAAW,GAAG,MAAMzD,oBAAoB,CAAC0D,mBAAmB,CAAC;UACjEC,OAAO,EAAE,IAAI,CAAClD,cAAc;UAC5BmD,KAAK,EAAE,IAAI,CAAClD;QACd,CAAC,CAAC;QAEF,IAAI+C,WAAW,EAAE;UACf,OAAOA,WAAW;QACpB;QAEA1D,MAAM,CAACwD,IAAI,CACT,gBAAgB,EAChB,kDACF,CAAC;MACH;;MAEA;MACA,IAAI,CAAC,IAAI,CAACzC,WAAW,EAAE;QACrBf,MAAM,CAACwD,IAAI,CACT,gBAAgB,EAChB,+CACF,CAAC;QACD,OAAO,IAAI;MACb;;MAEA;MACA,IAAI,CAACtD,UAAU,EAAE;QACfF,MAAM,CAACwD,IAAI,CAAC,gBAAgB,EAAE,sCAAsC,CAAC;QACrE,OAAO,IAAI;MACb;;MAEA;MACA,MAAMM,MAAM,GAAG,MAAM5D,UAAU,CAAC,IAAI,CAACa,WAAW,EAAE;QAChDgD,MAAM,EAAE,IAAI,CAACnD,aAAa;QAC1BgD,OAAO,EAAE,IAAI,CAAClD,cAAc;QAC5BoD,MAAM,EAAE;MACV,CAAC,CAAC;MAEF,OAAOA,MAAM;IACf,CAAC,CAAC,OAAOvB,KAAK,EAAE;MACdvC,MAAM,CAACuC,KAAK,CACV,gBAAgB,EAChB,8FAA8F,EAC9FA,KACF,CAAC;MACD,OAAO,IAAI;IACb;EACF;EAEQc,+BAA+BA,CACrCN,WAAmB,EACnBD,SAAkB,EACZ;IACN,IAAI,CAAC,IAAI,CAACjC,gBAAgB,EAAE;;IAE5B;IACA,MAAMmD,iBAAiB,GAAG,IAAI,CAACC,kBAAkB,CAAClB,WAAW,EAAED,SAAS,CAAC;IACzE,IAAI,CAACf,WAAW,CAACiC,iBAAiB,CAAC;EACrC;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEC,kBAAkBA,CAAClB,WAAmB,EAAED,SAAkB,EAAiB;IACzE,IAAI,CAAC,IAAI,CAACjC,gBAAgB,EAAE;MAC1B,MAAM,IAAIqD,KAAK,CAAC,iCAAiC,CAAC;IACpD;IAEA,MAAM;MAAE1B,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI,CAAC5B,gBAAgB;IAC/C,IAAI,CAACC,aAAa,GAAG,CAAC;;IAEtB;IACA,MAAMkD,iBAAiB,GAAGpE,uBAAuB,CAC/CmD,WAAW,EACXP,KAAK,EACLC,MAAM,EACN,IAAI,CAAC7B,aAAa,EAClB;MAAEuD,OAAO,EAAE,IAAI,CAACrD;IAAc,CAAC,EAC/BgC,SACF,CAAC;;IAED;IACA;IACA,IAAI,CAAC1B,kBAAkB,GAAG,CAAC,CAAC,CAAC;;IAE7B,OAAO4C,iBAAiB;EAC1B;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEnE,wCAAwCA,CACtCkD,WAAmB,EACnBnC,aAAsB,EACtBkC,SAAkB,EACH;IACf,OAAOhD,6BAA6B,CAClCiD,WAAW,EACXnC,aAAa,IAAI,IAAI,CAACA,aAAa,EACnCkC,SACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;EACEM,mCAAmCA,CACjCL,WAAmB,EACnBD,SAAkB,EACT;IACT,IAAI,IAAI,CAAC1B,kBAAkB,KAAK,IAAI,EAAE;MACpCpB,MAAM,CAACwD,IAAI,CACT,gBAAgB,EAChB,mDACF,CAAC;MACD,OAAO,KAAK;IACd;IAEA,MAAMY,gBAAgB,GAAG,IAAI,CAACvE,wCAAwC,CACpEkD,WAAW,EACX,KAAK,EACLD,SACF,CAAC;IACD,IAAI,CAACf,WAAW,CAACqC,gBAAgB,CAAC;IAClC,OAAO,IAAI;EACb;;EAEA;AACF;AACA;AACA;EACEC,iBAAiBA,CAACtB,WAAmB,EAAQ;IAC3C,IAAI,CAACM,+BAA+B,CAACN,WAAW,CAAC;IACjD,IAAI,CAAC/B,iBAAiB,GAAG+B,WAAW;IACpC,IAAI,CAAC9B,cAAc,GAAG,IAAI,CAACqC,mBAAmB,CAACP,WAAW,CAAC;IAC3D,IAAI,CAACvC,YAAY,EAAE;EACrB;;EAEA;AACF;AACA;AACA;AACA;EACU0C,iBAAiBA,CAACoB,aAAqB,EAAW;IACxD;IACA,IAAI,CAAC,IAAI,CAACtD,iBAAiB,EAAE;MAC3B,OAAO,IAAI;IACb;;IAEA;IACA,MAAMuD,WAAW,GAAG,IAAI,CAACjB,mBAAmB,CAACgB,aAAa,CAAC;;IAE3D;IACA,OAAOC,WAAW,KAAK,IAAI,CAACtD,cAAc;EAC5C;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACUqC,mBAAmBA,CAACP,WAAmB,EAAU;IACvD,OAAOhD,kBAAkB,CAACgD,WAAW,EAAE,IAAI,CAAC5B,cAAc,CAAC;EAC7D;EAEQqD,UAAUA,CAACC,MAAmB,EAAQ;IAC5C;IACA;EAAA;EAGMC,wBAAwBA,CAACC,KAAkB,EAAQ;IACzD,IAAI;MACF,MAAMC,IAAI,GAAGrF,KAAK,CAACsF,SAAS,CAAC,QAAQ,CAAC,CAACC,SAAS,CAAC,UAAUH,KAAK,CAACI,IAAI,EAAE,EAAE;QACvEC,UAAU,EAAE;UACV,aAAa,EAAEL,KAAK,CAACI,IAAI;UACzB,kBAAkB,EAAEJ,KAAK,CAAC7B,SAAS;UACnC,iBAAiB,EAAE;QACrB;MACF,CAAC,CAAC;MAEF,IAAI6B,KAAK,CAACM,QAAQ,EAAE;QAClBC,MAAM,CAACC,OAAO,CAACR,KAAK,CAACM,QAAQ,CAAC,CAACG,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;UACvDV,IAAI,CAACW,YAAY,CAAC,mBAAmBF,GAAG,EAAE,EAAEG,MAAM,CAACF,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC;MACJ;MAEAV,IAAI,CAACa,SAAS,CAAC;QAAEC,IAAI,EAAElG,cAAc,CAACmG;MAAG,CAAC,CAAC;MAC3Cf,IAAI,CAACgB,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC,OAAOrD,KAAK,EAAE;MACd;IAAA;EAEJ;EAEQgB,yBAAyBA,CAAChB,KAAY,EAAQ;IACpD,IAAI;MACF,MAAMqC,IAAI,GAAGrF,KAAK,CAACsF,SAAS,CAAC,QAAQ,CAAC,CAACC,SAAS,CAAC,sBAAsB,EAAE;QACvEE,UAAU,EAAE;UACV,cAAc,EAAE,IAAI;UACpB,mBAAmB,EAAEzC,KAAK,CAACsD,IAAI;UAC/B,sBAAsB,EAAEtD,KAAK,CAACuD,OAAO;UACrC,kBAAkB,EAAEC,IAAI,CAACC,GAAG,CAAC;QAC/B;MACF,CAAC,CAAC;MAEFpB,IAAI,CAACa,SAAS,CAAC;QAAEC,IAAI,EAAElG,cAAc,CAACyG,KAAK;QAAEH,OAAO,EAAEvD,KAAK,CAACuD;MAAQ,CAAC,CAAC;MACtElB,IAAI,CAACsB,eAAe,CAAC3D,KAAK,CAAC;MAC3BqC,IAAI,CAACgB,GAAG,CAAC,CAAC;IACZ,CAAC,CAAC,OAAOO,SAAS,EAAE;MAClB;IAAA;EAEJ;EAEA,MAAMC,sBAAsBA,CAC1BC,UAAe,EACfC,QAGC,EACuB;IACxB,IAAI;MACF,IAAInG,KAAK,IAAI,CAACD,UAAU,EAAE;QACxBF,MAAM,CAACwD,IAAI,CACT,gBAAgB,EAChB,+CACF,CAAC;QACD,OAAO,IAAI;MACb;MACA,OAAO,MAAMtD,UAAU,CAACmG,UAAU,CAAC;IACrC,CAAC,CAAC,OAAO9D,KAAK,EAAE;MACd;MACA,OAAO,IAAI;IACb;EACF;;EAEA;EACAgE,kBAAkBA,CAACC,UAAkB,EAAQ;IAC3C,IAAI,IAAI,CAAC9D,eAAe,EAAE;MACxBC,aAAa,CAAC,IAAI,CAACD,eAAe,CAAC;IACrC;IAEA,IAAI,IAAI,CAACpC,WAAW,EAAE;MACpB,IAAI,CAACoC,eAAe,GAAGE,WAAW,CAAC,MAAM;QACvC,IAAI,CAACX,cAAc,CAAC,CAAC;MACvB,CAAC,EAAEuE,UAAU,CAAC;IAChB;EACF;EAEAC,iBAAiBA,CAAC7C,OAAe,EAAQ;IACvC,IAAI,CAAClD,cAAc,GAAGgG,IAAI,CAACC,GAAG,CAAC,GAAG,EAAED,IAAI,CAACE,GAAG,CAAC,GAAG,EAAEhD,OAAO,CAAC,CAAC;EAC7D;EAEAiD,gBAAgBA,CAAC9C,MAAqB,EAAQ;IAC5C,IAAI,CAACnD,aAAa,GAAGmD,MAAM;EAC7B;EAEA+C,cAAcA,CAACH,GAAW,EAAQ;IAChC,IAAI,CAAClG,WAAW,GAAGiG,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEA,GAAG,CAAC;EACrC;;EAEA;AACF;AACA;AACA;EACEI,kBAAkBA,CAACrF,OAAgB,EAAQ;IACzC,IAAI,CAACR,qBAAqB,GAAGQ,OAAO;EACtC;;EAEA;AACF;AACA;AACA;EACEsF,iBAAiBA,CAACC,IAAY,EAAQ;IACpC,IAAI,CAAC9F,cAAc,GAAGuF,IAAI,CAACC,GAAG,CAAC,EAAE,EAAED,IAAI,CAACE,GAAG,CAAC,IAAI,EAAEK,IAAI,CAAC,CAAC;EAC1D;;EAEA;EACAC,uBAAuBA,CAACC,UAAkB,EAAEC,QAAgB,EAAQ;IAClE,MAAMzC,KAAkB,GAAG;MACzBwC,UAAU;MACVpC,IAAI,EAAE,eAAe;MACrBjC,SAAS,EAAEiD,IAAI,CAACC,GAAG,CAAC,CAAC;MACrBf,QAAQ,EAAE;QACRkC,UAAU;QACVC,QAAQ;QACRC,WAAW,EAAE,YAAY;QACzB7G,YAAY,EAAE,IAAI,CAACA;MACrB;IACF,CAAC;IAED,IAAI,CAACD,MAAM,CAAC+G,IAAI,CAAC3C,KAAK,CAAC;IACvB,IAAI,CAACH,UAAU,CAACG,KAAK,CAAC;IACtB,IAAI,CAACD,wBAAwB,CAACC,KAAK,CAAC;IACpC,IAAI,CAACpE,MAAM,CAAC+G,IAAI,CAAC3C,KAAK,CAAC;IACvB,IAAI,CAACH,UAAU,CAACG,KAAK,CAAC;IACtB,IAAI,CAACD,wBAAwB,CAACC,KAAK,CAAC;EACtC;;EAEA;EACA4C,iBAAiBA,CAAChF,KAAY,EAAE4E,UAAmB,EAAQ;IACzD,MAAMxC,KAAkB,GAAG;MACzBwC,UAAU,EAAEA,UAAU,IAAI,SAAS;MACnCpC,IAAI,EAAE,eAAe;MACrBjC,SAAS,EAAEiD,IAAI,CAACC,GAAG,CAAC,CAAC;MACrBf,QAAQ,EAAE;QACR1C,KAAK,EAAE,IAAI;QACXiF,SAAS,EAAEjF,KAAK,CAACsD,IAAI;QACrB4B,YAAY,EAAElF,KAAK,CAACuD,OAAO;QAC3BqB,UAAU;QACV3G,YAAY,EAAE,IAAI,CAACA;MACrB;IACF,CAAC;IAED,IAAI,CAACD,MAAM,CAAC+G,IAAI,CAAC3C,KAAK,CAAC;IACvB,IAAI,CAACH,UAAU,CAACG,KAAK,CAAC;IACtB,IAAI,CAACD,wBAAwB,CAACC,KAAK,CAAC;IACpC,IAAI,CAACpE,MAAM,CAAC+G,IAAI,CAAC3C,KAAK,CAAC;IACvB,IAAI,CAACH,UAAU,CAACG,KAAK,CAAC;IACtB,IAAI,CAACpB,yBAAyB,CAAChB,KAAK,CAAC;EACvC;;EAEA;EACAmF,SAASA,CAAA,EAAkB;IACzB,OAAO,CAAC,GAAG,IAAI,CAACnH,MAAM,CAAC;EACzB;;EAEA;EACAoH,WAAWA,CAAA,EAAS;IAClB,IAAI,CAACpH,MAAM,GAAG,EAAE;IAChB,IAAI,CAACC,YAAY,GAAG,CAAC;EACvB;;EAEA;EACAoH,cAAcA,CAAA,EAAwB;IACpC,MAAMC,KAAK,GAAG;MACZC,aAAa,EAAE,IAAI,CAACtH,YAAY;MAChCuH,WAAW,EAAE,IAAI,CAACxH,MAAM,CAACyH,MAAM;MAC/BC,kBAAkB,EAAE,CAAC;MACrBC,WAAW,EAAE;IACf,CAAC;IAED,IAAI,IAAI,CAAC3H,MAAM,CAACyH,MAAM,GAAG,CAAC,EAAE;MAC1B,MAAMG,YAAY,GAAG,IAAI,CAAC5H,MAAM,CAC7B6H,GAAG,CAAEzD,KAAK,IAAKA,KAAK,CAACM,QAAQ,EAAEoD,WAAW,IAAI,CAAC,CAAC,CAChDC,MAAM,CAAEC,IAAI,IAAKA,IAAI,GAAG,CAAC,CAAC;MAE7B,IAAIJ,YAAY,CAACH,MAAM,GAAG,CAAC,EAAE;QAC3BH,KAAK,CAACI,kBAAkB,GACtBE,YAAY,CAACK,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,EAAE,CAAC,CAAC,GAAGP,YAAY,CAACH,MAAM;MACjE;MAEA,MAAMW,kBAAkB,GAAG,IAAI,CAACpI,MAAM,CAAC+H,MAAM,CAC1C3D,KAAK,IAAKA,KAAK,CAACiE,OACnB,CAAC,CAACZ,MAAM;MACRH,KAAK,CAACK,WAAW,GAAIS,kBAAkB,GAAG,IAAI,CAACpI,MAAM,CAACyH,MAAM,GAAI,GAAG;IACrE;IAEA,OAAOH,KAAK;EACd;;EAEA;EACAgB,kBAAkBA,CAAA,EAAY;IAC5B,OAAO,IAAI,CAACvI,WAAW;EACzB;;EAEA;EACAwI,gBAAgBA,CAAA,EAAwB;IACtC,OAAO;MACLpG,eAAe,EAAE,IAAI,CAACA,eAAe,GAAG,IAAI,GAAG,CAAC;MAAE;MAClDhC,cAAc,EAAE,IAAI,CAACA,cAAc;MACnCE,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCH,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7BI,gBAAgB,EAAE,IAAI,CAACA;IACzB,CAAC;EACH;;EAEA;EACAkI,QAAQA,CAAA,EAAS;IACf,IAAI,CAAC7G,IAAI,CAAC,CAAC;IACX,IAAI,CAACyF,WAAW,CAAC,CAAC;IAClB;EACF;;EAEA;AACF;AACA;AACA;EACEqB,cAAcA,CAACC,GAAQ,EAAQ;IAC7B,IAAI,CAAClI,WAAW,GAAGkI,GAAG;EACxB;;EAEA;AACF;AACA;AACA;AACA;EACEC,YAAYA,CAACpG,SAAkB,EAAQ;IACrC,IAAI,CAAC,IAAI,CAACxC,WAAW,EAAE;MACrB;IACF;IAEA,IAAI,CAAC2B,cAAc,CAACa,SAAS,CAAC;EAChC;;EAEA;AACF;AACA;AACA;EACEf,WAAWA,CAAC4C,KAAU,EAAQ;IAC5B,IAAI,IAAI,CAACpD,aAAa,EAAE;MACtB,IAAI,CAACA,aAAa,CAACQ,WAAW,CAAC4C,KAAK,CAAC;IACvC;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"names":["trace","SpanStatusCode","Dimensions","Platform","createRecordingMetaEvent","createFullSnapshotEvent","createIncrementalSnapshotWithImageUpdate","createIncrementalSnapshotUtil","generateScreenHash","logger","screenRecordingService","isWeb","OS","ScreenRecorder","isRecording","events","captureCount","maxCaptures","captureQuality","captureScale","captureFormat","screenDimensions","nodeIdCounter","lastScreenCapture","lastScreenHash","enableChangeDetection","hashSampleSize","currentImageNodeId","viewShotRef","init","config","eventRecorder","_getScreenDimensions","recordingConfig","enabled","masking","updateConfig","start","info","recordEvent","_startPeriodicCapture","_captureScreen","stop","_stopPeriodicCapture","pause","resume","get","error","width","height","captureInterval","clearInterval","setInterval","undefined","timestamp","base64Image","_captureScreenBase64","hasChanged","_hasScreenChanged","success","updateScreenWithIncrementalSnapshot","_createAndEmitFullSnapshotEvent","_generateScreenHash","_recordScreenCaptureError","warn","isScreenRecordingAvailable","recordingImage","captureMaskedScreen","quality","scale","fullSnapshotEvent","createFullSnapshot","Error","current","incrementalEvent","forceFullSnapshot","currentBase64","currentHash","_sendEvent","_event","_recordOpenTelemetrySpan","event","span","getTracer","startSpan","type","attributes","metadata","Object","entries","forEach","key","value","setAttribute","String","setStatus","code","OK","end","name","message","Date","now","ERROR","recordException","spanError","setCaptureInterval","intervalMs","setCaptureQuality","Math","max","min","setCaptureFormat","format","setMaxCaptures","setChangeDetection","setHashSampleSize","size","recordScreenPerformance","screenName","loadTime","performance","push","recordScreenError","errorType","errorMessage","getEvents","clearEvents","getScreenStats","stats","totalCaptures","totalEvents","length","averageCaptureTime","successRate","captureTimes","map","captureTime","filter","time","reduce","a","b","successfulCaptures","dataUrl","isRecordingEnabled","getConfiguration","shutdown","setViewShotRef","ref","forceCapture"],"sourceRoot":"../../../src","sources":["recorder/screenRecorder.ts"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import SessionRecorderNative from "../native/SessionRecorderNative.js";
4
4
  import { logger } from "../utils/index.js";
5
- export class ScreenMaskingService {
5
+ export class ScreenRecordingService {
6
6
  isAvailable = false;
7
7
  constructor(config = {
8
8
  enabled: true,
@@ -25,14 +25,14 @@ export class ScreenMaskingService {
25
25
  // Try to access the native module to check if it's available
26
26
  if (SessionRecorderNative && typeof SessionRecorderNative.captureAndMask === 'function') {
27
27
  this.isAvailable = true;
28
- logger.info('ScreenMaskingService', 'Screen masking native module is available');
28
+ logger.info('ScreenRecordingService', 'Screen masking native module is available');
29
29
  } else {
30
30
  this.isAvailable = false;
31
- logger.warn('ScreenMaskingService', 'Screen masking native module is not available - auto-linking may still be in progress');
31
+ logger.warn('ScreenRecordingService', 'Screen masking native module is not available - auto-linking may still be in progress');
32
32
  }
33
33
  } catch (error) {
34
34
  this.isAvailable = false;
35
- logger.error('ScreenMaskingService', 'Error checking screen masking availability:', error);
35
+ logger.error('ScreenRecordingService', 'Error checking screen masking availability:', error);
36
36
  }
37
37
  }
38
38
 
@@ -41,7 +41,7 @@ export class ScreenMaskingService {
41
41
  */
42
42
  async captureMaskedScreen(options) {
43
43
  if (!this.isAvailable || !this.config.enabled) {
44
- logger.warn('ScreenMaskingService', 'Screen masking is not available or disabled');
44
+ logger.warn('ScreenRecordingService', 'Screen masking is not available or disabled');
45
45
  return null;
46
46
  }
47
47
  try {
@@ -52,7 +52,7 @@ export class ScreenMaskingService {
52
52
  const maskedImageBase64 = await SessionRecorderNative.captureAndMaskWithOptions(maskingOptions);
53
53
  return maskedImageBase64;
54
54
  } catch (error) {
55
- logger.error('ScreenMaskingService', 'Failed to capture masked screen:', error);
55
+ logger.error('ScreenRecordingService', 'Failed to capture masked screen:', error);
56
56
  return null;
57
57
  }
58
58
  }
@@ -62,14 +62,14 @@ export class ScreenMaskingService {
62
62
  */
63
63
  async captureMaskedScreenBasic() {
64
64
  if (!this.isAvailable || !this.config.enabled) {
65
- logger.warn('ScreenMaskingService', 'Screen masking is not available or disabled');
65
+ logger.warn('ScreenRecordingService', 'Screen masking is not available or disabled');
66
66
  return null;
67
67
  }
68
68
  try {
69
69
  const maskedImageBase64 = await SessionRecorderNative.captureAndMask();
70
70
  return maskedImageBase64;
71
71
  } catch (error) {
72
- logger.error('ScreenMaskingService', 'Failed to capture masked screen (basic):', error);
72
+ logger.error('ScreenRecordingService', 'Failed to capture masked screen (basic):', error);
73
73
  return null;
74
74
  }
75
75
  }
@@ -82,13 +82,13 @@ export class ScreenMaskingService {
82
82
  ...this.config,
83
83
  ...config
84
84
  };
85
- logger.info('ScreenMaskingService', 'Screen masking configuration updated');
85
+ logger.info('ScreenRecordingService', 'Screen masking configuration updated');
86
86
  }
87
87
 
88
88
  /**
89
89
  * Check if screen masking is available
90
90
  */
91
- isScreenMaskingAvailable() {
91
+ isScreenRecordingAvailable() {
92
92
  return this.isAvailable && this.config.enabled;
93
93
  }
94
94
 
@@ -103,5 +103,5 @@ export class ScreenMaskingService {
103
103
  }
104
104
 
105
105
  // Create a singleton instance
106
- export const screenMaskingService = new ScreenMaskingService();
107
- //# sourceMappingURL=screenMaskingService.js.map
106
+ export const screenRecordingService = new ScreenRecordingService();
107
+ //# sourceMappingURL=screenRecordingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SessionRecorderNative","logger","ScreenRecordingService","isAvailable","constructor","config","enabled","maskTextInputs","maskImages","maskButtons","maskLabels","maskWebViews","maskSandboxedViews","checkAvailability","captureAndMask","info","warn","error","captureMaskedScreen","options","maskingOptions","maskedImageBase64","captureAndMaskWithOptions","captureMaskedScreenBasic","updateConfig","isScreenRecordingAvailable","getConfig","screenRecordingService"],"sourceRoot":"../../../src","sources":["services/screenRecordingService.ts"],"mappings":"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","ignoreList":[]}
@@ -13,13 +13,13 @@ export declare class ScreenRecorder implements EventRecorder {
13
13
  private screenDimensions;
14
14
  private eventRecorder?;
15
15
  private nodeIdCounter;
16
- private viewShotRef;
17
16
  private lastScreenCapture;
18
17
  private lastScreenHash;
19
18
  private enableChangeDetection;
20
19
  private hashSampleSize;
21
20
  private currentImageNodeId;
22
- private maskingConfig?;
21
+ private recordingConfig?;
22
+ private viewShotRef;
23
23
  init(config: RecorderConfig, eventRecorder?: EventRecorder): void;
24
24
  start(): void;
25
25
  stop(): void;
@@ -75,10 +75,6 @@ export declare class ScreenRecorder implements EventRecorder {
75
75
  private _sendEvent;
76
76
  private _recordOpenTelemetrySpan;
77
77
  private _recordScreenCaptureError;
78
- captureSpecificElement(elementRef: any, _options?: {
79
- format?: 'png' | 'jpg' | 'webp';
80
- quality?: number;
81
- }): Promise<string | null>;
82
78
  setCaptureInterval(intervalMs: number): void;
83
79
  setCaptureQuality(quality: number): void;
84
80
  setCaptureFormat(format: 'png' | 'jpg'): void;
@@ -1 +1 @@
1
- {"version":3,"file":"screenRecorder.d.ts","sourceRoot":"","sources":["../../../../src/recorder/screenRecorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenRecorder.d.ts","sourceRoot":"","sources":["../../../../src/recorder/screenRecorder.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type MaskingOptions } from '../native/SessionRecorderNative';
2
- export interface ScreenMaskingConfig {
2
+ export interface ScreenRecordingConfig {
3
3
  /** Whether screen masking is enabled */
4
4
  enabled: boolean;
5
5
  /** Whether to mask text inputs (UITextField, UITextView, React Native text components) */
@@ -15,10 +15,10 @@ export interface ScreenMaskingConfig {
15
15
  /** Whether to mask sandboxed views (system views that don't belong to current process) */
16
16
  maskSandboxedViews?: boolean;
17
17
  }
18
- export declare class ScreenMaskingService {
18
+ export declare class ScreenRecordingService {
19
19
  private config;
20
20
  private isAvailable;
21
- constructor(config?: ScreenMaskingConfig);
21
+ constructor(config?: ScreenRecordingConfig);
22
22
  /**
23
23
  * Check if the native masking module is available
24
24
  */
@@ -34,15 +34,15 @@ export declare class ScreenMaskingService {
34
34
  /**
35
35
  * Update the masking configuration
36
36
  */
37
- updateConfig(config: Partial<ScreenMaskingConfig>): void;
37
+ updateConfig(config: Partial<ScreenRecordingConfig>): void;
38
38
  /**
39
39
  * Check if screen masking is available
40
40
  */
41
- isScreenMaskingAvailable(): boolean;
41
+ isScreenRecordingAvailable(): boolean;
42
42
  /**
43
43
  * Get the current configuration
44
44
  */
45
- getConfig(): ScreenMaskingConfig;
45
+ getConfig(): ScreenRecordingConfig;
46
46
  }
47
- export declare const screenMaskingService: ScreenMaskingService;
48
- //# sourceMappingURL=screenMaskingService.d.ts.map
47
+ export declare const screenRecordingService: ScreenRecordingService;
48
+ //# sourceMappingURL=screenRecordingService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenRecordingService.d.ts","sourceRoot":"","sources":["../../../../src/services/screenRecordingService.ts"],"names":[],"mappings":"AAAA,OAA8B,EAAE,KAAK,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAG7F,MAAM,WAAW,qBAAqB;IACpC,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,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,WAAW,CAAkB;gBAGnC,MAAM,GAAE,qBAQP;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,qBAAqB,CAAC,GAAG,IAAI;IAK1D;;OAEG;IACH,0BAA0B,IAAI,OAAO;IAIrC;;OAEG;IACH,SAAS,IAAI,qBAAqB;CAGnC;AAGD,eAAO,MAAM,sBAAsB,wBAA+B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplayer-app/session-recorder-react-native",
3
- "version": "1.3.4",
3
+ "version": "1.3.6",
4
4
  "description": "Multiplayer Fullstack Session Recorder for React Native",
5
5
  "author": {
6
6
  "name": "Multiplayer Software, Inc.",
@@ -58,7 +58,8 @@
58
58
  "typecheck": "tsc",
59
59
  "lint": "eslint \"**/*.{js,ts,tsx}\"",
60
60
  "prepare": "bob build",
61
- "release": "release-it --only-version"
61
+ "release": "release-it --only-version",
62
+ "copy-to-test": "../../scripts/copy-rn-lib.sh"
62
63
  },
63
64
  "keywords": [
64
65
  "multiplayer",
@@ -107,7 +108,7 @@
107
108
  "typescript": "^5.9.2"
108
109
  },
109
110
  "dependencies": {
110
- "@multiplayer-app/session-recorder-common": "1.3.4",
111
+ "@multiplayer-app/session-recorder-common": "1.3.6",
111
112
  "@opentelemetry/core": "2.0.1",
112
113
  "@opentelemetry/exporter-trace-otlp-http": "0.203.0",
113
114
  "@opentelemetry/instrumentation": "0.203.0",
@@ -28,7 +28,7 @@ export const DEFAULT_MASKING_CONFIG: SessionRecorderConfigs['masking'] = {
28
28
  maskLabels: false,
29
29
  maskButtons: false,
30
30
  maskWebViews: false,
31
- maskTextInputs: true,
31
+ maskTextInputs: false,
32
32
  maskSandboxedViews: false,
33
33
  };
34
34
 
@@ -118,22 +118,9 @@ if (typeof fetch !== 'undefined' && typeof global !== 'undefined') {
118
118
 
119
119
  // Capture request data
120
120
  const inputIsRequest = typeof Request !== 'undefined' && input instanceof Request
121
- const safeToConstructRequest = !inputIsRequest || !(input as Request).bodyUsed
122
-
123
- // Only construct a new Request when it's safe (i.e., body not already used)
124
- let requestForMetadata: Request | null = null
125
- if (safeToConstructRequest) {
126
- try {
127
- requestForMetadata = new Request(input as RequestInfo, init)
128
- } catch {
129
- requestForMetadata = null
130
- }
131
- }
132
121
 
133
122
  if (configs.recordRequestHeaders) {
134
- if (requestForMetadata) {
135
- networkRequest.requestHeaders = _headersToObject(requestForMetadata.headers)
136
- } else if (inputIsRequest) {
123
+ if (inputIsRequest) {
137
124
  networkRequest.requestHeaders = _headersToObject((input as Request).headers)
138
125
  } else {
139
126
  networkRequest.requestHeaders = _headersInitToObject(init?.headers)
@@ -141,9 +128,9 @@ if (typeof fetch !== 'undefined' && typeof global !== 'undefined') {
141
128
  }
142
129
 
143
130
  if (configs.shouldRecordBody) {
144
- const candidateBody: any | null | undefined = requestForMetadata
145
- ? (requestForMetadata as any).body as any
146
- : (inputIsRequest ? (init as any)?.body : (init as any)?.body)
131
+ // Only attempt to read the body from init (safe); avoid constructing/cloning Requests
132
+ // If the caller passed a Request as input, we do not attempt to read its body here
133
+ const candidateBody: any | null | undefined = init?.body
147
134
 
148
135
  if (!isNullish(candidateBody)) {
149
136
  const requestBody = _tryReadFetchBody({
@@ -14,10 +14,9 @@ import {
14
14
  logger,
15
15
  } from '../utils';
16
16
  import {
17
- screenMaskingService,
18
- type ScreenMaskingConfig,
19
- } from '../services/screenMaskingService';
20
- import { captureRef } from 'react-native-view-shot';
17
+ screenRecordingService,
18
+ type ScreenRecordingConfig,
19
+ } from '../services/screenRecordingService';
21
20
  const isWeb = Platform.OS === 'web';
22
21
 
23
22
  export class ScreenRecorder implements EventRecorder {
@@ -28,18 +27,18 @@ export class ScreenRecorder implements EventRecorder {
28
27
  private captureCount: number = 0;
29
28
  private maxCaptures: number = 100; // Limit captures to prevent memory issues
30
29
  private captureQuality: number = 0.2;
31
- private captureScale: number = 0.66;
30
+ private captureScale: number = 0.33;
32
31
  private captureFormat: 'png' | 'jpg' = 'jpg';
33
32
  private screenDimensions: { width: number; height: number } | null = null;
34
33
  private eventRecorder?: EventRecorder;
35
34
  private nodeIdCounter: number = 1;
36
- private viewShotRef: any = null;
37
35
  private lastScreenCapture: string | null = null;
38
36
  private lastScreenHash: string | null = null;
39
37
  private enableChangeDetection: boolean = true;
40
38
  private hashSampleSize: number = 100;
41
39
  private currentImageNodeId: number | null = null;
42
- private maskingConfig?: ScreenMaskingConfig;
40
+ private recordingConfig?: ScreenRecordingConfig;
41
+ private viewShotRef: any = null;
43
42
 
44
43
  init(config: RecorderConfig, eventRecorder?: EventRecorder): void {
45
44
  this.config = config;
@@ -47,13 +46,13 @@ export class ScreenRecorder implements EventRecorder {
47
46
  this._getScreenDimensions();
48
47
 
49
48
  // Initialize masking configuration
50
- this.maskingConfig = {
49
+ this.recordingConfig = {
51
50
  enabled: true,
52
51
  ...this.config.masking,
53
52
  };
54
53
 
55
54
  // Update the masking service configuration
56
- screenMaskingService.updateConfig(this.maskingConfig);
55
+ screenRecordingService.updateConfig(this.recordingConfig);
57
56
  }
58
57
 
59
58
  start(): void {
@@ -169,18 +168,18 @@ export class ScreenRecorder implements EventRecorder {
169
168
  }
170
169
 
171
170
  // Try native masking first if available
172
- if (screenMaskingService.isScreenMaskingAvailable()) {
171
+ if (screenRecordingService.isScreenRecordingAvailable()) {
173
172
  logger.info(
174
173
  'ScreenRecorder',
175
174
  'Using native masking for screen capture'
176
175
  );
177
- const maskedImage = await screenMaskingService.captureMaskedScreen({
176
+ const recordingImage = await screenRecordingService.captureMaskedScreen({
178
177
  quality: this.captureQuality,
179
178
  scale: this.captureScale,
180
179
  });
181
180
 
182
- if (maskedImage) {
183
- return maskedImage;
181
+ if (recordingImage) {
182
+ return recordingImage;
184
183
  }
185
184
 
186
185
  logger.warn(
@@ -189,7 +188,9 @@ export class ScreenRecorder implements EventRecorder {
189
188
  );
190
189
  }
191
190
 
192
- // Fallback to react-native-view-shot
191
+
192
+
193
+ // // Fallback to react-native-view-shot
193
194
  if (!this.viewShotRef) {
194
195
  logger.warn(
195
196
  'ScreenRecorder',
@@ -198,20 +199,22 @@ export class ScreenRecorder implements EventRecorder {
198
199
  return null;
199
200
  }
200
201
 
201
- // Check if captureRef is available
202
- if (!captureRef) {
203
- logger.warn('ScreenRecorder', 'react-native-view-shot not available');
204
- return null;
205
- }
202
+ return null;
206
203
 
207
- // Capture the screen using react-native-view-shot
208
- const result = await captureRef(this.viewShotRef, {
209
- format: this.captureFormat,
210
- quality: this.captureQuality,
211
- result: 'base64',
212
- });
204
+ // // Check if captureRef is available
205
+ // if (!captureRef) {
206
+ // logger.warn('ScreenRecorder', 'react-native-view-shot not available');
207
+ // return null;
208
+ // }
209
+
210
+ // // Capture the screen using react-native-view-shot
211
+ // const result = await captureRef(this.viewShotRef, {
212
+ // format: this.captureFormat,
213
+ // quality: this.captureQuality,
214
+ // result: 'base64',
215
+ // });
213
216
 
214
- return result;
217
+ // return result;
215
218
  } catch (error) {
216
219
  logger.error(
217
220
  'ScreenRecorder',
@@ -397,27 +400,7 @@ export class ScreenRecorder implements EventRecorder {
397
400
  }
398
401
  }
399
402
 
400
- async captureSpecificElement(
401
- elementRef: any,
402
- _options?: {
403
- format?: 'png' | 'jpg' | 'webp';
404
- quality?: number;
405
- }
406
- ): Promise<string | null> {
407
- try {
408
- if (isWeb || !captureRef) {
409
- logger.warn(
410
- 'ScreenRecorder',
411
- 'Element capture not available on web platform'
412
- );
413
- return null;
414
- }
415
- return await captureRef(elementRef);
416
- } catch (error) {
417
- // Failed to capture specific element - silently continue
418
- return null;
419
- }
420
- }
403
+
421
404
 
422
405
  // Configuration methods
423
406
  setCaptureInterval(intervalMs: number): void {