@multiplayer-app/session-recorder-react-native 0.0.1-alpha.4 → 0.0.1-alpha.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.
@@ -19,15 +19,9 @@ export declare class ScreenRecorder {
19
19
  private _startPeriodicCapture;
20
20
  private _stopPeriodicCapture;
21
21
  private _captureScreen;
22
- private _performScreenCapture;
23
- private _captureWithViewShot;
24
- private _captureWithScreenshot;
25
- private _getRootViewRef;
26
- private _createPlaceholderImage;
27
22
  private _sendEvent;
28
23
  private _recordOpenTelemetrySpan;
29
24
  private _recordScreenCaptureError;
30
- captureScreenNow(): Promise<string | null>;
31
25
  captureSpecificElement(elementRef: any, options?: {
32
26
  format?: 'png' | 'jpg' | 'webp';
33
27
  quality?: number;
@@ -1 +1 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ScreenRecorder=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _api=require("@opentelemetry/api");var _reactNative=require("react-native");var _reactNativeViewShot=require("react-native-view-shot");var ScreenRecorder=exports.ScreenRecorder=function(){function ScreenRecorder(){(0,_classCallCheck2["default"])(this,ScreenRecorder);this.isRecording=false;this.events=[];this.captureCount=0;this.maxCaptures=100;this.captureQuality=0.8;this.captureFormat='png';this.screenDimensions=null;this.currentScreen=null;}return(0,_createClass2["default"])(ScreenRecorder,[{key:"init",value:function init(config){this.config=config;this._getScreenDimensions();}},{key:"start",value:function start(){this.isRecording=true;this.events=[];this.captureCount=0;this._startPeriodicCapture();}},{key:"stop",value:function stop(){this.isRecording=false;this._stopPeriodicCapture();}},{key:"pause",value:function pause(){this.isRecording=false;this._stopPeriodicCapture();}},{key:"resume",value:function resume(){this.isRecording=true;this._startPeriodicCapture();}},{key:"_getScreenDimensions",value:function _getScreenDimensions(){try{this.screenDimensions=_reactNative.Dimensions.get('window');}catch(error){this.screenDimensions={width:375,height:667};}}},{key:"_startPeriodicCapture",value:function _startPeriodicCapture(){var _this=this;if(this.captureInterval){clearInterval(this.captureInterval);}this.captureInterval=setInterval(function(){_this._captureScreen();},5000);}},{key:"_stopPeriodicCapture",value:function _stopPeriodicCapture(){if(this.captureInterval){clearInterval(this.captureInterval);this.captureInterval=undefined;}}},{key:"_captureScreen",value:function(){var _captureScreen2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(){var _a,_b,startTime,screenData,captureTime,screenEvent,_t;return _regenerator["default"].wrap(function(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(!this.isRecording||this.captureCount>=this.maxCaptures)){_context.next=1;break;}return _context.abrupt("return");case 1:_context.prev=1;startTime=Date.now();_context.next=2;return this._performScreenCapture();case 2:screenData=_context.sent;captureTime=Date.now()-startTime;if(screenData){screenEvent={screenName:this.currentScreen||'unknown',type:'screenCapture',timestamp:Date.now(),dataUrl:screenData,metadata:{captureTime:captureTime,captureCount:this.captureCount+1,quality:this.captureQuality,format:this.captureFormat,screenWidth:(_a=this.screenDimensions)===null||_a===void 0?void 0:_a.width,screenHeight:(_b=this.screenDimensions)===null||_b===void 0?void 0:_b.height}};this.events.push(screenEvent);this.captureCount++;this._sendEvent(screenEvent);this._recordOpenTelemetrySpan(screenEvent);}_context.next=4;break;case 3:_context.prev=3;_t=_context["catch"](1);this._recordScreenCaptureError(_t instanceof Error?_t:new Error(String(_t)));case 4:case"end":return _context.stop();}},_callee,this,[[1,3]]);}));function _captureScreen(){return _captureScreen2.apply(this,arguments);}return _captureScreen;}()},{key:"_performScreenCapture",value:function(){var _performScreenCapture2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(){var Screenshot,_t2,_t3;return _regenerator["default"].wrap(function(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_context2.next=1;return this._captureWithViewShot();case 1:return _context2.abrupt("return",_context2.sent);case 2:_context2.prev=2;_t2=_context2["catch"](0);_context2.prev=3;Screenshot=require('react-native-screenshot');if(!(Screenshot&&Screenshot.takeScreenshot)){_context2.next=5;break;}_context2.next=4;return this._captureWithScreenshot();case 4:return _context2.abrupt("return",_context2.sent);case 5:_context2.next=7;break;case 6:_context2.prev=6;_t3=_context2["catch"](3);case 7:return _context2.abrupt("return",this._createPlaceholderImage());case 8:case"end":return _context2.stop();}},_callee2,this,[[0,2],[3,6]]);}));function _performScreenCapture(){return _performScreenCapture2.apply(this,arguments);}return _performScreenCapture;}()},{key:"_captureWithViewShot",value:function(){var _captureWithViewShot2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(){var _t4;return _regenerator["default"].wrap(function(_context3){while(1)switch(_context3.prev=_context3.next){case 0:_context3.prev=0;_context3.next=1;return(0,_reactNativeViewShot.captureScreen)();case 1:return _context3.abrupt("return",_context3.sent);case 2:_context3.prev=2;_t4=_context3["catch"](0);return _context3.abrupt("return",null);case 3:case"end":return _context3.stop();}},_callee3,null,[[0,2]]);}));function _captureWithViewShot(){return _captureWithViewShot2.apply(this,arguments);}return _captureWithViewShot;}()},{key:"_captureWithScreenshot",value:function(){var _captureWithScreenshot2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(){var Screenshot,options,_t5;return _regenerator["default"].wrap(function(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.prev=0;Screenshot=require('react-native-screenshot');options={format:this.captureFormat,quality:this.captureQuality};_context4.next=1;return Screenshot.takeScreenshot(options);case 1:return _context4.abrupt("return",_context4.sent);case 2:_context4.prev=2;_t5=_context4["catch"](0);return _context4.abrupt("return",null);case 3:case"end":return _context4.stop();}},_callee4,this,[[0,2]]);}));function _captureWithScreenshot(){return _captureWithScreenshot2.apply(this,arguments);}return _captureWithScreenshot;}()},{key:"_getRootViewRef",value:function _getRootViewRef(){try{var appName=_reactNative.AppRegistry.getAppKeys()[0];return appName?{current:null}:null;}catch(error){return null;}}},{key:"_createPlaceholderImage",value:function _createPlaceholderImage(){var _a,_b;var width=((_a=this.screenDimensions)===null||_a===void 0?void 0:_a.width)||375;var height=((_b=this.screenDimensions)===null||_b===void 0?void 0:_b.height)||667;var svgContent="\n <svg width=\"".concat(width,"\" height=\"").concat(height,"\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect width=\"100%\" height=\"100%\" fill=\"#f0f0f0\"/>\n <text x=\"50%\" y=\"50%\" text-anchor=\"middle\" dy=\".3em\" fill=\"#666\" font-family=\"Arial\" font-size=\"16\">\n Screen Capture Placeholder\n </text>\n <text x=\"50%\" y=\"60%\" text-anchor=\"middle\" dy=\".3em\" fill=\"#666\" font-family=\"Arial\" font-size=\"14\">\n Captured at ").concat(new Date().toLocaleTimeString(),"\n </text>\n </svg>\n ");var base64Content=Buffer.from(svgContent,'utf8').toString('base64');return"data:image/svg+xml;base64,".concat(base64Content);}},{key:"_sendEvent",value:function _sendEvent(event){}},{key:"_recordOpenTelemetrySpan",value:function _recordOpenTelemetrySpan(event){try{var span=_api.trace.getTracer('screen').startSpan("Screen.".concat(event.type),{attributes:{'screen.type':event.type,'screen.timestamp':event.timestamp,'screen.platform':'react-native'}});if(event.metadata){Object.entries(event.metadata).forEach(function(_ref){var _ref2=(0,_slicedToArray2["default"])(_ref,2),key=_ref2[0],value=_ref2[1];span.setAttribute("screen.metadata.".concat(key),String(value));});}span.setStatus({code:_api.SpanStatusCode.OK});span.end();}catch(error){}}},{key:"_recordScreenCaptureError",value:function _recordScreenCaptureError(error){try{var span=_api.trace.getTracer('screen').startSpan('Screen.capture.error',{attributes:{'screen.error':true,'screen.error.type':error.name,'screen.error.message':error.message,'screen.timestamp':Date.now()}});span.setStatus({code:_api.SpanStatusCode.ERROR,message:error.message});span.recordException(error);span.end();}catch(spanError){}}},{key:"captureScreenNow",value:function(){var _captureScreenNow=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(){return _regenerator["default"].wrap(function(_context5){while(1)switch(_context5.prev=_context5.next){case 0:if(this.isRecording){_context5.next=1;break;}return _context5.abrupt("return",null);case 1:_context5.next=2;return this._performScreenCapture();case 2:return _context5.abrupt("return",_context5.sent);case 3:case"end":return _context5.stop();}},_callee5,this);}));function captureScreenNow(){return _captureScreenNow.apply(this,arguments);}return captureScreenNow;}()},{key:"captureSpecificElement",value:function(){var _captureSpecificElement=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(elementRef,options){var _t6;return _regenerator["default"].wrap(function(_context6){while(1)switch(_context6.prev=_context6.next){case 0:_context6.prev=0;_context6.next=1;return(0,_reactNativeViewShot.captureRef)(elementRef);case 1:return _context6.abrupt("return",_context6.sent);case 2:_context6.prev=2;_t6=_context6["catch"](0);return _context6.abrupt("return",null);case 3:case"end":return _context6.stop();}},_callee6,null,[[0,2]]);}));function captureSpecificElement(_x,_x2){return _captureSpecificElement.apply(this,arguments);}return captureSpecificElement;}()},{key:"setCaptureInterval",value:function setCaptureInterval(intervalMs){var _this2=this;if(this.captureInterval){clearInterval(this.captureInterval);}if(this.isRecording){this.captureInterval=setInterval(function(){_this2._captureScreen();},intervalMs);}}},{key:"setCaptureQuality",value:function setCaptureQuality(quality){this.captureQuality=Math.max(0.1,Math.min(1.0,quality));}},{key:"setCaptureFormat",value:function setCaptureFormat(format){this.captureFormat=format;}},{key:"setMaxCaptures",value:function setMaxCaptures(max){this.maxCaptures=Math.max(1,max);}},{key:"recordScreenPerformance",value:function recordScreenPerformance(screenName,loadTime){var event={screenName:screenName,type:'screenCapture',timestamp:Date.now(),metadata:{screenName:screenName,loadTime:loadTime,performance:'monitoring',captureCount:this.captureCount}};this.events.push(event);this._sendEvent(event);this._recordOpenTelemetrySpan(event);this.events.push(event);this._sendEvent(event);this._recordOpenTelemetrySpan(event);}},{key:"recordScreenError",value:function recordScreenError(error,screenName){var event={screenName:screenName||'unknown',type:'screenCapture',timestamp:Date.now(),metadata:{error:true,errorType:error.name,errorMessage:error.message,screenName:screenName,captureCount:this.captureCount}};this.events.push(event);this._sendEvent(event);this._recordOpenTelemetrySpan(event);this.events.push(event);this._sendEvent(event);this._recordScreenCaptureError(error);}},{key:"getEvents",value:function getEvents(){return(0,_toConsumableArray2["default"])(this.events);}},{key:"clearEvents",value:function clearEvents(){this.events=[];this.captureCount=0;}},{key:"getScreenStats",value:function getScreenStats(){var stats={totalCaptures:this.captureCount,totalEvents:this.events.length,averageCaptureTime:0,successRate:0};if(this.events.length>0){var captureTimes=this.events.map(function(event){var _a;return((_a=event.metadata)===null||_a===void 0?void 0:_a.captureTime)||0;}).filter(function(time){return time>0;});if(captureTimes.length>0){stats.averageCaptureTime=captureTimes.reduce(function(a,b){return a+b;},0)/captureTimes.length;}var successfulCaptures=this.events.filter(function(event){return event.dataUrl;}).length;stats.successRate=successfulCaptures/this.events.length*100;}return stats;}},{key:"isRecordingEnabled",value:function isRecordingEnabled(){return this.isRecording;}},{key:"getConfiguration",value:function getConfiguration(){return{captureInterval:this.captureInterval?5000:0,captureQuality:this.captureQuality,captureFormat:this.captureFormat,maxCaptures:this.maxCaptures,screenDimensions:this.screenDimensions};}},{key:"shutdown",value:function shutdown(){this.stop();this.clearEvents();}}]);}();
1
+ "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ScreenRecorder=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _api=require("@opentelemetry/api");var _reactNative=require("react-native");var _reactNativeViewShot=require("react-native-view-shot");var ScreenRecorder=exports.ScreenRecorder=function(){function ScreenRecorder(){(0,_classCallCheck2["default"])(this,ScreenRecorder);this.isRecording=false;this.events=[];this.captureCount=0;this.maxCaptures=100;this.captureQuality=0.8;this.captureFormat='png';this.screenDimensions=null;this.currentScreen=null;}return(0,_createClass2["default"])(ScreenRecorder,[{key:"init",value:function init(config){this.config=config;this._getScreenDimensions();}},{key:"start",value:function start(){this.isRecording=true;this.events=[];this.captureCount=0;this._startPeriodicCapture();}},{key:"stop",value:function stop(){this.isRecording=false;this._stopPeriodicCapture();}},{key:"pause",value:function pause(){this.isRecording=false;this._stopPeriodicCapture();}},{key:"resume",value:function resume(){this.isRecording=true;}},{key:"_getScreenDimensions",value:function _getScreenDimensions(){try{this.screenDimensions=_reactNative.Dimensions.get('window');}catch(error){this.screenDimensions={width:375,height:667};}}},{key:"_startPeriodicCapture",value:function _startPeriodicCapture(){var _this=this;if(this.captureInterval){clearInterval(this.captureInterval);}this.captureInterval=setInterval(function(){_this._captureScreen();},5000);}},{key:"_stopPeriodicCapture",value:function _stopPeriodicCapture(){if(this.captureInterval){clearInterval(this.captureInterval);this.captureInterval=undefined;}}},{key:"_captureScreen",value:function(){var _captureScreen2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(){return _regenerator["default"].wrap(function(_context){while(1)switch(_context.prev=_context.next){case 0:if(!(!this.isRecording||this.captureCount>=this.maxCaptures)){_context.next=1;break;}return _context.abrupt("return");case 1:case"end":return _context.stop();}},_callee,this);}));function _captureScreen(){return _captureScreen2.apply(this,arguments);}return _captureScreen;}()},{key:"_sendEvent",value:function _sendEvent(event){}},{key:"_recordOpenTelemetrySpan",value:function _recordOpenTelemetrySpan(event){try{var span=_api.trace.getTracer('screen').startSpan("Screen.".concat(event.type),{attributes:{'screen.type':event.type,'screen.timestamp':event.timestamp,'screen.platform':'react-native'}});if(event.metadata){Object.entries(event.metadata).forEach(function(_ref){var _ref2=(0,_slicedToArray2["default"])(_ref,2),key=_ref2[0],value=_ref2[1];span.setAttribute("screen.metadata.".concat(key),String(value));});}span.setStatus({code:_api.SpanStatusCode.OK});span.end();}catch(error){}}},{key:"_recordScreenCaptureError",value:function _recordScreenCaptureError(error){try{var span=_api.trace.getTracer('screen').startSpan('Screen.capture.error',{attributes:{'screen.error':true,'screen.error.type':error.name,'screen.error.message':error.message,'screen.timestamp':Date.now()}});span.setStatus({code:_api.SpanStatusCode.ERROR,message:error.message});span.recordException(error);span.end();}catch(spanError){}}},{key:"captureSpecificElement",value:function(){var _captureSpecificElement=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(elementRef,options){var _t;return _regenerator["default"].wrap(function(_context2){while(1)switch(_context2.prev=_context2.next){case 0:_context2.prev=0;_context2.next=1;return(0,_reactNativeViewShot.captureRef)(elementRef);case 1:return _context2.abrupt("return",_context2.sent);case 2:_context2.prev=2;_t=_context2["catch"](0);return _context2.abrupt("return",null);case 3:case"end":return _context2.stop();}},_callee2,null,[[0,2]]);}));function captureSpecificElement(_x,_x2){return _captureSpecificElement.apply(this,arguments);}return captureSpecificElement;}()},{key:"setCaptureInterval",value:function setCaptureInterval(intervalMs){var _this2=this;if(this.captureInterval){clearInterval(this.captureInterval);}if(this.isRecording){this.captureInterval=setInterval(function(){_this2._captureScreen();},intervalMs);}}},{key:"setCaptureQuality",value:function setCaptureQuality(quality){this.captureQuality=Math.max(0.1,Math.min(1.0,quality));}},{key:"setCaptureFormat",value:function setCaptureFormat(format){this.captureFormat=format;}},{key:"setMaxCaptures",value:function setMaxCaptures(max){this.maxCaptures=Math.max(1,max);}},{key:"recordScreenPerformance",value:function recordScreenPerformance(screenName,loadTime){var event={screenName:screenName,type:'screenCapture',timestamp:Date.now(),metadata:{screenName:screenName,loadTime:loadTime,performance:'monitoring',captureCount:this.captureCount}};this.events.push(event);this._sendEvent(event);this._recordOpenTelemetrySpan(event);this.events.push(event);this._sendEvent(event);this._recordOpenTelemetrySpan(event);}},{key:"recordScreenError",value:function recordScreenError(error,screenName){var event={screenName:screenName||'unknown',type:'screenCapture',timestamp:Date.now(),metadata:{error:true,errorType:error.name,errorMessage:error.message,screenName:screenName,captureCount:this.captureCount}};this.events.push(event);this._sendEvent(event);this._recordOpenTelemetrySpan(event);this.events.push(event);this._sendEvent(event);this._recordScreenCaptureError(error);}},{key:"getEvents",value:function getEvents(){return(0,_toConsumableArray2["default"])(this.events);}},{key:"clearEvents",value:function clearEvents(){this.events=[];this.captureCount=0;}},{key:"getScreenStats",value:function getScreenStats(){var stats={totalCaptures:this.captureCount,totalEvents:this.events.length,averageCaptureTime:0,successRate:0};if(this.events.length>0){var captureTimes=this.events.map(function(event){var _a;return((_a=event.metadata)===null||_a===void 0?void 0:_a.captureTime)||0;}).filter(function(time){return time>0;});if(captureTimes.length>0){stats.averageCaptureTime=captureTimes.reduce(function(a,b){return a+b;},0)/captureTimes.length;}var successfulCaptures=this.events.filter(function(event){return event.dataUrl;}).length;stats.successRate=successfulCaptures/this.events.length*100;}return stats;}},{key:"isRecordingEnabled",value:function isRecordingEnabled(){return this.isRecording;}},{key:"getConfiguration",value:function getConfiguration(){return{captureInterval:this.captureInterval?5000:0,captureQuality:this.captureQuality,captureFormat:this.captureFormat,maxCaptures:this.maxCaptures,screenDimensions:this.screenDimensions};}},{key:"shutdown",value:function shutdown(){this.stop();this.clearEvents();}}]);}();
@@ -1 +1 @@
1
- {"version":3,"file":"screenRecorder.js","sourceRoot":"","sources":["../../src/recorder/screenRecorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenRecorder.js","sourceRoot":"","sources":["../../src/recorder/screenRecorder.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const version = "0.0.1-alpha.4";
1
+ export declare const version = "0.0.1-alpha.6";
package/dist/version.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.version=void 0;var version=exports.version="0.0.1-alpha.4";
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.version=void 0;var version=exports.version="0.0.1-alpha.6";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplayer-app/session-recorder-react-native",
3
- "version": "0.0.1-alpha.4",
3
+ "version": "0.0.1-alpha.6",
4
4
  "description": "Multiplayer Fullstack Session Recorder for React Native",
5
5
  "author": {
6
6
  "name": "Multiplayer Software, Inc.",
@@ -82,7 +82,6 @@
82
82
  "react-native-gesture-handler": "^2.14.0",
83
83
  "react-native-mmkv": "^2.11.0",
84
84
  "react-native-reanimated": "^3.6.0",
85
- "react-native-screenshot": "^1.0.0",
86
85
  "react-native-view-shot": "^4.0.3",
87
86
  "socket.io-client": "4.7.5"
88
87
  },
@@ -1,7 +1,7 @@
1
1
  import { ScreenEvent, RecorderConfig } from '../types'
2
2
  import { trace, SpanStatusCode } from '@opentelemetry/api'
3
- import { Dimensions, AppRegistry } from 'react-native'
4
- import { captureRef, captureScreen } from 'react-native-view-shot'
3
+ import { Dimensions } from 'react-native'
4
+ import { captureRef } from 'react-native-view-shot'
5
5
 
6
6
  export class ScreenRecorder {
7
7
  private config?: RecorderConfig
@@ -41,7 +41,7 @@ export class ScreenRecorder {
41
41
 
42
42
  resume(): void {
43
43
  this.isRecording = true
44
- this._startPeriodicCapture()
44
+ // this._startPeriodicCapture()
45
45
  }
46
46
 
47
47
  private _getScreenDimensions(): void {
@@ -74,123 +74,10 @@ export class ScreenRecorder {
74
74
  private async _captureScreen(): Promise<void> {
75
75
  if (!this.isRecording || this.captureCount >= this.maxCaptures) return
76
76
 
77
- try {
78
- const startTime = Date.now()
79
- const screenData = await this._performScreenCapture()
80
- const captureTime = Date.now() - startTime
81
-
82
- if (screenData) {
83
- const screenEvent: ScreenEvent = {
84
- screenName: this.currentScreen || 'unknown',
85
- type: 'screenCapture',
86
- timestamp: Date.now(),
87
- dataUrl: screenData,
88
- metadata: {
89
- captureTime,
90
- captureCount: this.captureCount + 1,
91
- quality: this.captureQuality,
92
- format: this.captureFormat,
93
- screenWidth: this.screenDimensions?.width,
94
- screenHeight: this.screenDimensions?.height,
95
- },
96
- }
97
-
98
- this.events.push(screenEvent)
99
- this.captureCount++
100
- this._sendEvent(screenEvent)
101
- this._recordOpenTelemetrySpan(screenEvent)
102
- }
103
- } catch (error) {
104
- // Failed to capture screen - silently continue
105
- this._recordScreenCaptureError(error instanceof Error ? error : new Error(String(error)))
106
- }
107
77
  }
108
78
 
109
79
 
110
80
 
111
- private async _performScreenCapture(): Promise<string | null> {
112
- try {
113
- // Try react-native-view-shot screen capture first
114
- return await this._captureWithViewShot()
115
- } catch (error) {
116
- // react-native-view-shot not available - silently continue
117
- }
118
-
119
- try {
120
- // Try react-native-screenshot
121
- const Screenshot = require('react-native-screenshot')
122
- if (Screenshot && Screenshot.takeScreenshot) {
123
- return await this._captureWithScreenshot()
124
- }
125
- } catch (error) {
126
- // react-native-screenshot not available - silently continue
127
- }
128
-
129
- // Fallback to placeholder
130
- return this._createPlaceholderImage()
131
- }
132
-
133
- private async _captureWithViewShot(): Promise<string | null> {
134
- try {
135
- // Use captureScreen for full screen capture
136
-
137
- return await captureScreen()
138
- } catch (error) {
139
- // Failed to capture with ViewShot - silently continue
140
- }
141
- return null
142
- }
143
-
144
- private async _captureWithScreenshot(): Promise<string | null> {
145
- try {
146
- const Screenshot = require('react-native-screenshot')
147
- const options = {
148
- format: this.captureFormat,
149
- quality: this.captureQuality,
150
- }
151
-
152
- return await Screenshot.takeScreenshot(options)
153
- } catch (error) {
154
- // Failed to capture with Screenshot - silently continue
155
- }
156
- return null
157
- }
158
-
159
- private _getRootViewRef(): any {
160
- try {
161
- // Try to get the root view reference
162
- const appName = AppRegistry.getAppKeys()[0]
163
- return appName ? { current: null } : null
164
- } catch (error) {
165
- // Failed to get root view ref - silently continue
166
- return null
167
- }
168
- }
169
-
170
- private _createPlaceholderImage(): string {
171
- // Create a simple placeholder image data URL
172
- // Note: This won't work in React Native environment, but provides a fallback
173
- const width = this.screenDimensions?.width || 375
174
- const height = this.screenDimensions?.height || 667
175
-
176
- // Return a simple data URL for placeholder
177
- const svgContent = `
178
- <svg width="${width}" height="${height}" xmlns="http://www.w3.org/2000/svg">
179
- <rect width="100%" height="100%" fill="#f0f0f0"/>
180
- <text x="50%" y="50%" text-anchor="middle" dy=".3em" fill="#666" font-family="Arial" font-size="16">
181
- Screen Capture Placeholder
182
- </text>
183
- <text x="50%" y="60%" text-anchor="middle" dy=".3em" fill="#666" font-family="Arial" font-size="14">
184
- Captured at ${new Date().toLocaleTimeString()}
185
- </text>
186
- </svg>
187
- `
188
-
189
- // Use a simple base64 encoding alternative for React Native
190
- const base64Content = Buffer.from(svgContent, 'utf8').toString('base64')
191
- return `data:image/svg+xml;base64,${base64Content}`
192
- }
193
-
194
81
  private _sendEvent(event: ScreenEvent): void {
195
82
  // Screen event recorded
196
83
  // Send event to backend or store locally
@@ -238,15 +125,6 @@ export class ScreenRecorder {
238
125
  }
239
126
  }
240
127
 
241
- // Manual screen capture methods
242
- async captureScreenNow(): Promise<string | null> {
243
- if (!this.isRecording) {
244
- // Screen recording not active - silently continue
245
- return null
246
- }
247
-
248
- return await this._performScreenCapture()
249
- }
250
128
 
251
129
  async captureSpecificElement(elementRef: any, options?: {
252
130
  format?: 'png' | 'jpg' | 'webp'
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "0.0.1-alpha.4"
1
+ export const version = "0.0.1-alpha.6"
@@ -1,3 +0,0 @@
1
- import { RecorderReactNativeSDK } from './recorder';
2
- import { SessionRecorderHttpTraceExporter } from '@multiplayer-app/session-recorder-common';
3
- export { RecorderReactNativeSDK, SessionRecorderHttpTraceExporter };
package/dist/exporters.js DELETED
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"RecorderReactNativeSDK",{enumerable:true,get:function get(){return _recorder.RecorderReactNativeSDK;}});Object.defineProperty(exports,"SessionRecorderHttpTraceExporter",{enumerable:true,get:function get(){return _sessionRecorderCommon.SessionRecorderHttpTraceExporter;}});var _recorder=require("./recorder");var _sessionRecorderCommon=require("@multiplayer-app/session-recorder-common");
@@ -1 +0,0 @@
1
- {"version":3,"file":"exporters.js","sourceRoot":"","sources":["../src/exporters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAA;AAE3F,6CAA6C;AAC7C,OAAO,EAAE,sBAAsB,EAAE,gCAAgC,EAAE,CAAA"}
@@ -1,133 +0,0 @@
1
- import { SessionRecorderOptions, ISessionRecorder, IResourceAttributes } from './types';
2
- import { SessionType } from '@multiplayer-app/session-recorder-common';
3
- import { ISession, SessionState } from './types';
4
- export declare const getNavigatorInfo: () => IResourceAttributes;
5
- export declare class SessionRecorder implements ISessionRecorder {
6
- private _isInitialized;
7
- private _configs;
8
- private _apiService;
9
- private _tracer;
10
- private _recorder;
11
- private _storageService;
12
- private _startRequestController;
13
- private _sessionId;
14
- get sessionId(): string | null;
15
- set sessionId(sessionId: string | null);
16
- private _sessionType;
17
- get sessionType(): SessionType;
18
- set sessionType(sessionType: SessionType);
19
- get continuousRecording(): boolean;
20
- private _sessionState;
21
- get sessionState(): SessionState | null;
22
- set sessionState(state: SessionState | null);
23
- private _session;
24
- get session(): ISession | null;
25
- set session(session: ISession | null);
26
- private _sessionAttributes;
27
- get sessionAttributes(): Record<string, any>;
28
- set sessionAttributes(attributes: Record<string, any> | null);
29
- /**
30
- * Error message getter and setter
31
- */
32
- get error(): string;
33
- set error(v: string);
34
- private _error;
35
- /**
36
- * React Native doesn't have HTML elements, so we return null
37
- */
38
- get sessionWidgetButtonElement(): any;
39
- /**
40
- * Initialize debugger with default or custom configurations
41
- */
42
- constructor();
43
- private _loadStoredSessionData;
44
- /**
45
- * Initialize the session debugger
46
- * @param configs - custom configurations for session debugger
47
- */
48
- init(configs: SessionRecorderOptions): Promise<void>;
49
- /**
50
- * Start a new session
51
- * @param type - the type of session to start
52
- * @param session - the session to start
53
- */
54
- start(type?: SessionType, session?: ISession): Promise<void>;
55
- /**
56
- * Stop the current session with an optional comment
57
- * @param comment - user-provided comment to include in session session attributes
58
- */
59
- stop(comment?: string): Promise<void>;
60
- /**
61
- * Pause the current session
62
- */
63
- pause(): Promise<void>;
64
- /**
65
- * Resume the current session
66
- */
67
- resume(): Promise<void>;
68
- /**
69
- * Cancel the current session
70
- */
71
- cancel(): Promise<void>;
72
- /**
73
- * Save the continuous recording session
74
- */
75
- save(): Promise<any>;
76
- /**
77
- * Set the session attributes
78
- * @param attributes - the attributes to set
79
- */
80
- setSessionAttributes(attributes: Record<string, any>): void;
81
- /**
82
- * Set a custom click handler for the recording button
83
- * @param handler - function that will be invoked when the button is clicked
84
- */
85
- set recordingButtonClickHandler(handler: () => boolean | void);
86
- /**
87
- * @description Check if session should be started/stopped automatically
88
- * @param {ISession} [sessionPayload]
89
- * @returns {Promise<void>}
90
- */
91
- checkRemoteContinuousSession(sessionPayload?: Omit<ISession, '_id' | 'shortId'>): Promise<void>;
92
- /**
93
- * Create a new session and start it
94
- */
95
- private _createSessionAndStart;
96
- /**
97
- * Start tracing and recording for the session
98
- */
99
- private _start;
100
- /**
101
- * Stop tracing and recording for the session
102
- */
103
- private _stop;
104
- /**
105
- * Pause the session tracing and recording
106
- */
107
- private _pause;
108
- /**
109
- * Resume the session tracing and recording
110
- */
111
- private _resume;
112
- private _setupSessionAndStart;
113
- /**
114
- * Set the session ID in storage
115
- * @param sessionId - the session ID to set or clear
116
- */
117
- private _setSession;
118
- private _clearSession;
119
- /**
120
- * Check the operation validity based on the session state and action
121
- * @param action - action being checked ('init', 'start', 'stop', 'cancel', 'pause', 'resume')
122
- */
123
- private _checkOperation;
124
- setNavigationRef(ref: any): void;
125
- enableGestureTracking(): void;
126
- disableGestureTracking(): void;
127
- recordTap(x: number, y: number, target?: string): void;
128
- recordSwipe(direction: string, target?: string): void;
129
- recordNavigate(routeName: string, params?: Record<string, any>): void;
130
- recordGoBack(): void;
131
- setSessionAttribute(key: string, value: any): void;
132
- captureException(error: Error, context?: Record<string, any>): void;
133
- }
@@ -1 +0,0 @@
1
- "use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.getNavigatorInfo=exports.SessionRecorder=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _asyncToGenerator2=_interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _otel=require("./otel");var _recorder=require("./recorder");var _api=require("./services/api.service");var _storage=require("./services/storage.service");var _sessionRecorderCommon=require("@multiplayer-app/session-recorder-common");var _config=require("./config");var _xhr=require("./patch/xhr");var _types=require("./types");var _utils=require("./utils");var _platform=require("./utils/platform");function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable;})),t.push.apply(t,o);}return t;}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){(0,_defineProperty2["default"])(e,r,t[r]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r));});}return e;}var getNavigatorInfo=exports.getNavigatorInfo=function getNavigatorInfo(){return _objectSpread({platform:'react-native',userAgent:'React Native',language:'en',timestamp:new Date().toISOString()},(0,_platform.getPlatformAttributes)());};var SessionRecorder=exports.SessionRecorder=function(){function SessionRecorder(){(0,_classCallCheck2["default"])(this,SessionRecorder);this._isInitialized=false;this._configs=null;this._apiService=new _api.ApiService();this._tracer=new _otel.TracerReactNativeSDK();this._recorder=new _recorder.RecorderReactNativeSDK();this._storageService=new _storage.StorageService();this._startRequestController=null;this._sessionId=null;this._sessionType=_sessionRecorderCommon.SessionType.PLAIN;this._sessionState=null;this._session=null;this._sessionAttributes=null;this._error='';this._loadStoredSessionData();}return(0,_createClass2["default"])(SessionRecorder,[{key:"sessionId",get:function get(){return this._sessionId;},set:function set(sessionId){this._sessionId=sessionId;if(sessionId){this._storageService.saveSessionId(sessionId);}}},{key:"sessionType",get:function get(){return this._sessionType;},set:function set(sessionType){this._sessionType=sessionType;this._storageService.saveSessionType(sessionType);}},{key:"continuousRecording",get:function get(){return this.sessionType===_sessionRecorderCommon.SessionType.CONTINUOUS;}},{key:"sessionState",get:function get(){return this._sessionState||_types.SessionState.stopped;},set:function set(state){this._sessionState=state;if(state){this._storageService.saveSessionState(state);}}},{key:"session",get:function get(){return this._session;},set:function set(session){this._session=session;if(session){this._storageService.saveSessionObject(session);}}},{key:"sessionAttributes",get:function get(){return this._sessionAttributes||{};},set:function set(attributes){this._sessionAttributes=attributes;}},{key:"error",get:function get(){return this._error||'';},set:function set(v){this._error=v;}},{key:"sessionWidgetButtonElement",get:function get(){return null;}},{key:"_loadStoredSessionData",value:function(){var _loadStoredSessionData2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(){var storedData,_t;return _regenerator["default"].wrap(function(_context){while(1)switch(_context.prev=_context.next){case 0:_context.prev=0;_context.next=1;return this._storageService.getAllSessionData();case 1:storedData=_context.sent;if((0,_utils.isSessionActive)(storedData.sessionObject,storedData.sessionType===_sessionRecorderCommon.SessionType.CONTINUOUS)){this.session=storedData.sessionObject;this.sessionId=storedData.sessionId;this.sessionType=storedData.sessionType||_sessionRecorderCommon.SessionType.PLAIN;this.sessionState=storedData.sessionState;}else{this.session=null;this.sessionId=null;this.sessionState=null;this.sessionType=_sessionRecorderCommon.SessionType.PLAIN;}_context.next=3;break;case 2:_context.prev=2;_t=_context["catch"](0);console.error('Failed to load stored session data:',_t);this.session=null;this.sessionId=null;this.sessionState=null;this.sessionType=_sessionRecorderCommon.SessionType.PLAIN;case 3:case"end":return _context.stop();}},_callee,this,[[0,2]]);}));function _loadStoredSessionData(){return _loadStoredSessionData2.apply(this,arguments);}return _loadStoredSessionData;}()},{key:"init",value:function(){var _init=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(configs){return _regenerator["default"].wrap(function(_context2){while(1)switch(_context2.prev=_context2.next){case 0:this._configs=(0,_config.getSessionRecorderConfig)(_objectSpread(_objectSpread({},this._configs),configs));this._isInitialized=true;this._checkOperation('init');_context2.next=1;return _storage.StorageService.initialize();case 1:(0,_xhr.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize||_config.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);(0,_xhr.setShouldRecordHttpData)(!this._configs.captureBody,this._configs.captureHeaders);this._tracer.init(this._configs);this._apiService.init(this._configs);if(this._configs.apiKey){this._recorder.init(this._configs);}if(this.sessionId&&(this.sessionState===_types.SessionState.started||this.sessionState===_types.SessionState.paused)){this._start();}case 2:case"end":return _context2.stop();}},_callee2,this);}));function init(_x){return _init.apply(this,arguments);}return init;}()},{key:"start",value:function(){var _start2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(){var type,session,_a,_args3=arguments;return _regenerator["default"].wrap(function(_context3){while(1)switch(_context3.prev=_context3.next){case 0:type=_args3.length>0&&_args3[0]!==undefined?_args3[0]:_sessionRecorderCommon.SessionType.PLAIN;session=_args3.length>1?_args3[1]:undefined;this._checkOperation('start');if(type===_sessionRecorderCommon.SessionType.CONTINUOUS&&!((_a=this._configs)===null||_a===void 0?void 0:_a.showContinuousRecording)){type=_sessionRecorderCommon.SessionType.PLAIN;}this.sessionType=type;this._startRequestController=new AbortController();if(!session){_context3.next=1;break;}this._setupSessionAndStart(session,true);_context3.next=2;break;case 1:_context3.next=2;return this._createSessionAndStart();case 2:case"end":return _context3.stop();}},_callee3,this);}));function start(){return _start2.apply(this,arguments);}return start;}()},{key:"stop",value:function(){var _stop2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(comment){var request,response,_t2;return _regenerator["default"].wrap(function(_context4){while(1)switch(_context4.prev=_context4.next){case 0:_context4.prev=0;this._checkOperation('stop');this._stop();if(!this.continuousRecording){_context4.next=2;break;}_context4.next=1;return this._apiService.stopContinuousDebugSession(this.sessionId);case 1:this.sessionType=_sessionRecorderCommon.SessionType.PLAIN;_context4.next=4;break;case 2:request={sessionAttributes:{comment:comment},stoppedAt:Date.now()};_context4.next=3;return this._apiService.stopSession(this.sessionId,request);case 3:response=_context4.sent;case 4:this._clearSession();_context4.next=6;break;case 5:_context4.prev=5;_t2=_context4["catch"](0);this.error=_t2.message;case 6:case"end":return _context4.stop();}},_callee4,this,[[0,5]]);}));function stop(_x2){return _stop2.apply(this,arguments);}return stop;}()},{key:"pause",value:function(){var _pause2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(){return _regenerator["default"].wrap(function(_context5){while(1)switch(_context5.prev=_context5.next){case 0:try{this._checkOperation('pause');this._pause();}catch(error){this.error=error.message;}case 1:case"end":return _context5.stop();}},_callee5,this);}));function pause(){return _pause2.apply(this,arguments);}return pause;}()},{key:"resume",value:function(){var _resume2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(){return _regenerator["default"].wrap(function(_context6){while(1)switch(_context6.prev=_context6.next){case 0:try{this._checkOperation('resume');this._resume();}catch(error){this.error=error.message;}case 1:case"end":return _context6.stop();}},_callee6,this);}));function resume(){return _resume2.apply(this,arguments);}return resume;}()},{key:"cancel",value:function(){var _cancel=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(){var _t3;return _regenerator["default"].wrap(function(_context7){while(1)switch(_context7.prev=_context7.next){case 0:_context7.prev=0;this._checkOperation('cancel');this._stop();if(!this.continuousRecording){_context7.next=2;break;}_context7.next=1;return this._apiService.stopContinuousDebugSession(this.sessionId);case 1:this.sessionType=_sessionRecorderCommon.SessionType.PLAIN;_context7.next=3;break;case 2:_context7.next=3;return this._apiService.cancelSession(this.sessionId);case 3:this._clearSession();_context7.next=5;break;case 4:_context7.prev=4;_t3=_context7["catch"](0);this.error=_t3.message;case 5:case"end":return _context7.stop();}},_callee7,this,[[0,4]]);}));function cancel(){return _cancel.apply(this,arguments);}return cancel;}()},{key:"save",value:function(){var _save=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(){var _a,res,_t4;return _regenerator["default"].wrap(function(_context8){while(1)switch(_context8.prev=_context8.next){case 0:_context8.prev=0;this._checkOperation('save');if(!(!this.continuousRecording||!((_a=this._configs)===null||_a===void 0?void 0:_a.showContinuousRecording))){_context8.next=1;break;}return _context8.abrupt("return");case 1:_context8.next=2;return this._apiService.saveContinuousDebugSession(this.sessionId,{sessionAttributes:this.sessionAttributes,resourceAttributes:getNavigatorInfo(),stoppedAt:Date.now(),name:this.sessionAttributes.userName?"".concat(this.sessionAttributes.userName,"'s session on ").concat((0,_utils.getFormattedDate)(Date.now(),{month:'short',day:'numeric'})):"Session on ".concat((0,_utils.getFormattedDate)(Date.now()))});case 2:res=_context8.sent;return _context8.abrupt("return",res);case 3:_context8.prev=3;_t4=_context8["catch"](0);this.error=_t4.message;case 4:case"end":return _context8.stop();}},_callee8,this,[[0,3]]);}));function save(){return _save.apply(this,arguments);}return save;}()},{key:"setSessionAttributes",value:function setSessionAttributes(attributes){this._sessionAttributes=attributes;}},{key:"recordingButtonClickHandler",set:function set(handler){}},{key:"checkRemoteContinuousSession",value:function(){var _checkRemoteContinuousSession=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(sessionPayload){var _a,payload,_yield$this$_apiServi,state;return _regenerator["default"].wrap(function(_context9){while(1)switch(_context9.prev=_context9.next){case 0:this._checkOperation('autoStartRemoteContinuousSession');if((_a=this._configs)===null||_a===void 0?void 0:_a.showContinuousRecording){_context9.next=1;break;}return _context9.abrupt("return");case 1:payload={sessionAttributes:_objectSpread(_objectSpread({},this.sessionAttributes),(sessionPayload===null||sessionPayload===void 0?void 0:sessionPayload.sessionAttributes)||{}),resourceAttributes:_objectSpread(_objectSpread({},getNavigatorInfo()),(sessionPayload===null||sessionPayload===void 0?void 0:sessionPayload.resourceAttributes)||{})};_context9.next=2;return this._apiService.checkRemoteSession(payload);case 2:_yield$this$_apiServi=_context9.sent;state=_yield$this$_apiServi.state;if(!(state=='START')){_context9.next=4;break;}if(!(this.sessionState!==_types.SessionState.started)){_context9.next=3;break;}_context9.next=3;return this.start(_sessionRecorderCommon.SessionType.CONTINUOUS);case 3:_context9.next=5;break;case 4:if(!(state=='STOP')){_context9.next=5;break;}if(!(this.sessionState!==_types.SessionState.stopped)){_context9.next=5;break;}_context9.next=5;return this.stop();case 5:case"end":return _context9.stop();}},_callee9,this);}));function checkRemoteContinuousSession(_x3){return _checkRemoteContinuousSession.apply(this,arguments);}return checkRemoteContinuousSession;}()},{key:"_createSessionAndStart",value:function(){var _createSessionAndStart2=(0,_asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee0(){var _a,signal,payload,request,session,_t5,_t6;return _regenerator["default"].wrap(function(_context0){while(1)switch(_context0.prev=_context0.next){case 0:signal=(_a=this._startRequestController)===null||_a===void 0?void 0:_a.signal;_context0.prev=1;payload={sessionAttributes:this.sessionAttributes,resourceAttributes:getNavigatorInfo(),name:this.sessionAttributes.userName?"".concat(this.sessionAttributes.userName,"'s session on ").concat((0,_utils.getFormattedDate)(Date.now(),{month:'short',day:'numeric'})):"Session on ".concat((0,_utils.getFormattedDate)(Date.now()))};request=!this.continuousRecording?payload:{debugSessionData:payload};if(!this.continuousRecording){_context0.next=3;break;}_context0.next=2;return this._apiService.startContinuousDebugSession(request,signal);case 2:_t5=_context0.sent;_context0.next=5;break;case 3:_context0.next=4;return this._apiService.startSession(request,signal);case 4:_t5=_context0.sent;case 5:session=_t5;if(session){session.sessionType=this.continuousRecording?_sessionRecorderCommon.SessionType.CONTINUOUS:_sessionRecorderCommon.SessionType.PLAIN;this._setupSessionAndStart(session,false);}_context0.next=7;break;case 6:_context0.prev=6;_t6=_context0["catch"](1);this.error=_t6.message;if(this.continuousRecording){this.sessionType=_sessionRecorderCommon.SessionType.PLAIN;}case 7:case"end":return _context0.stop();}},_callee0,this,[[1,6]]);}));function _createSessionAndStart(){return _createSessionAndStart2.apply(this,arguments);}return _createSessionAndStart;}()},{key:"_start",value:function _start(){this.sessionState=_types.SessionState.started;if(this.sessionId){this._tracer.start(this.sessionId,this.sessionType);this._recorder.start(this.sessionId,this.sessionType);}}},{key:"_stop",value:function _stop(){this.sessionState=_types.SessionState.stopped;this._tracer.shutdown();this._recorder.stop();}},{key:"_pause",value:function _pause(){this._tracer.shutdown();this._recorder.stop();this.sessionState=_types.SessionState.paused;}},{key:"_resume",value:function _resume(){if(this.sessionId){this._tracer.setSessionId(this.sessionId,this.sessionType);this._recorder.start(this.sessionId,this.sessionType);}this.sessionState=_types.SessionState.started;}},{key:"_setupSessionAndStart",value:function _setupSessionAndStart(session){var configureExporters=arguments.length>1&&arguments[1]!==undefined?arguments[1]:true;if(configureExporters&&session.tempApiKey){this._configs.apiKey=session.tempApiKey;this._recorder.init(this._configs);this._tracer.init(this._configs);this._apiService.updateConfigs({apiKey:this._configs.apiKey});}this._setSession(session);this._start();}},{key:"_setSession",value:function _setSession(session){this.session=_objectSpread(_objectSpread({},session),{},{createdAt:session.createdAt||new Date().toISOString()});this.sessionId=(session===null||session===void 0?void 0:session.shortId)||(session===null||session===void 0?void 0:session._id);}},{key:"_clearSession",value:function _clearSession(){this.session=null;this.sessionId=null;this.sessionState=_types.SessionState.stopped;this._storageService.clearSessionData();}},{key:"_checkOperation",value:function _checkOperation(action,payload){if(!this._isInitialized){throw new Error('Configuration not initialized. Call init() before performing any actions.');}switch(action){case'start':if(this.sessionState===_types.SessionState.started){throw new Error('Session is already started.');}break;case'stop':if(this.sessionState!==_types.SessionState.paused&&this.sessionState!==_types.SessionState.started){throw new Error('Cannot stop. Session is not currently started.');}break;case'cancel':if(this.sessionState===_types.SessionState.stopped){throw new Error('Cannot cancel. Session has already been stopped.');}break;case'pause':if(this.sessionState!==_types.SessionState.started){throw new Error('Cannot pause. Session is not running.');}break;case'resume':if(this.sessionState!==_types.SessionState.paused){throw new Error('Cannot resume. Session is not paused.');}break;case'save':if(!this.continuousRecording){throw new Error('Cannot save continuous recording session. Continuous recording is not enabled.');}if(this.sessionState!==_types.SessionState.started){throw new Error('Cannot save continuous recording session. Session is not started.');}break;case'autoStartRemoteContinuousSession':if(this.sessionState!==_types.SessionState.stopped){throw new Error('Cannot start remote continuous session. Session is not stopped.');}break;}}},{key:"setNavigationRef",value:function setNavigationRef(ref){if(this._isInitialized){this._tracer.setNavigationRef(ref);this._recorder.setNavigationRef(ref);}}},{key:"enableGestureTracking",value:function enableGestureTracking(){if(this._isInitialized){this._tracer.enableGestureTracking();}}},{key:"disableGestureTracking",value:function disableGestureTracking(){if(this._isInitialized){this._tracer.disableGestureTracking();}}},{key:"recordTap",value:function recordTap(x,y,target){if(this._isInitialized){this._tracer.recordTap(x,y,target);}}},{key:"recordSwipe",value:function recordSwipe(direction,target){if(this._isInitialized){this._tracer.recordSwipe(direction,target);}}},{key:"recordNavigate",value:function recordNavigate(routeName,params){if(this._isInitialized){this._tracer.recordNavigate(routeName,params);}}},{key:"recordGoBack",value:function recordGoBack(){if(this._isInitialized){this._tracer.recordGoBack();}}},{key:"setSessionAttribute",value:function setSessionAttribute(key,value){if(this._session){if(!this._session.sessionAttributes){this._session.sessionAttributes={};}this._session.sessionAttributes[key]=value;this._session.updatedAt=new Date().toISOString();}}},{key:"captureException",value:function captureException(error,context){if(this._isInitialized){this._tracer.captureException(error,context);}}}]);}();
@@ -1 +0,0 @@
1
- {"version":3,"file":"sessionRecorder.js","sourceRoot":"","sources":["../src/sessionRecorder.ts"],"names":[],"mappings":"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"}