@multiplayer-app/session-recorder-react-native 0.0.1-beta.2 → 0.0.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/copy-react-native-dist.sh +1 -7
- package/dist/components/SessionRecorderWidget/FinalPopover.d.ts +11 -0
- package/dist/components/SessionRecorderWidget/FinalPopover.js +1 -0
- package/dist/components/SessionRecorderWidget/FinalPopover.js.map +1 -0
- package/dist/components/SessionRecorderWidget/FloatingButton.d.ts +8 -0
- package/dist/components/SessionRecorderWidget/FloatingButton.js +1 -0
- package/dist/components/SessionRecorderWidget/FloatingButton.js.map +1 -0
- package/dist/components/SessionRecorderWidget/InitialPopover.d.ts +13 -0
- package/dist/components/SessionRecorderWidget/InitialPopover.js +1 -0
- package/dist/components/SessionRecorderWidget/InitialPopover.js.map +1 -0
- package/dist/components/SessionRecorderWidget/ModalContainer.d.ts +8 -0
- package/dist/components/SessionRecorderWidget/ModalContainer.js +1 -0
- package/dist/components/SessionRecorderWidget/ModalContainer.js.map +1 -0
- package/dist/components/SessionRecorderWidget/SessionRecorderWidget.d.ts +5 -0
- package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js +1 -0
- package/dist/components/SessionRecorderWidget/SessionRecorderWidget.js.map +1 -0
- package/dist/components/SessionRecorderWidget/icons.d.ts +10 -0
- package/dist/components/SessionRecorderWidget/icons.js +1 -0
- package/dist/components/SessionRecorderWidget/icons.js.map +1 -0
- package/dist/components/SessionRecorderWidget/index.d.ts +2 -0
- package/dist/components/SessionRecorderWidget/index.js +1 -0
- package/dist/components/SessionRecorderWidget/index.js.map +1 -0
- package/dist/components/SessionRecorderWidget/styles.d.ts +128 -0
- package/dist/components/SessionRecorderWidget/styles.js +1 -0
- package/dist/components/SessionRecorderWidget/styles.js.map +1 -0
- package/dist/context/SessionRecorderContext.d.ts +5 -3
- package/dist/context/SessionRecorderContext.js +1 -1
- package/dist/context/SessionRecorderContext.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/patch/xhr.js +1 -1
- package/dist/patch/xhr.js.map +1 -1
- package/dist/services/storage.service.d.ts +18 -2
- package/dist/services/storage.service.js +1 -1
- package/dist/services/storage.service.js.map +1 -1
- package/dist/session-recorder.d.ts +2 -1
- package/dist/session-recorder.js +1 -1
- package/dist/session-recorder.js.map +1 -1
- package/dist/utils/platform.d.ts +3 -0
- package/package.json +3 -6
- package/src/components/SessionRecorderWidget/FinalPopover.tsx +73 -0
- package/src/components/SessionRecorderWidget/FloatingButton.tsx +149 -0
- package/src/components/SessionRecorderWidget/InitialPopover.tsx +95 -0
- package/src/components/SessionRecorderWidget/ModalContainer.tsx +80 -0
- package/src/components/SessionRecorderWidget/SessionRecorderWidget.tsx +109 -0
- package/src/components/SessionRecorderWidget/icons.tsx +43 -0
- package/src/components/SessionRecorderWidget/index.ts +3 -0
- package/src/components/SessionRecorderWidget/styles.ts +137 -0
- package/src/context/SessionRecorderContext.tsx +12 -34
- package/src/index.ts +1 -9
- package/src/patch/xhr.ts +6 -7
- package/src/services/storage.service.ts +45 -4
- package/src/session-recorder.ts +9 -3
- package/tsconfig.json +1 -1
- package/RRWEB_INTEGRATION.md +0 -336
- package/VIEWSHOT_INTEGRATION_TEST.md +0 -123
- package/dist/components/GestureCaptureWrapper.d.ts +0 -6
- package/dist/components/GestureCaptureWrapper.js +0 -1
- package/dist/components/GestureCaptureWrapper.js.map +0 -1
- package/dist/expo.d.ts +0 -7
- package/dist/expo.js +0 -1
- package/dist/expo.js.map +0 -1
- package/dist/otel/instrumentations/gestureInstrumentation.d.ts +0 -15
- package/dist/otel/instrumentations/gestureInstrumentation.js +0 -1
- package/dist/otel/instrumentations/gestureInstrumentation.js.map +0 -1
- package/dist/otel/instrumentations/reactNativeInstrumentation.d.ts +0 -8
- package/dist/otel/instrumentations/reactNativeInstrumentation.js +0 -1
- package/dist/otel/instrumentations/reactNativeInstrumentation.js.map +0 -1
- package/dist/otel/instrumentations/reactNavigationInstrumentation.d.ts +0 -13
- package/dist/otel/instrumentations/reactNavigationInstrumentation.js +0 -1
- package/dist/otel/instrumentations/reactNavigationInstrumentation.js.map +0 -1
- package/dist/recorder/gestureHandlerRecorder.d.ts +0 -19
- package/dist/recorder/gestureHandlerRecorder.js +0 -1
- package/dist/recorder/gestureHandlerRecorder.js.map +0 -1
- package/dist/types/rrweb.d.ts +0 -118
- package/dist/types/rrweb.js +0 -1
- package/dist/types/rrweb.js.map +0 -1
- package/src/expo.ts +0 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/services/storage.service.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,2CAA2C,CAAA;
|
|
1
|
+
{"version":3,"file":"storage.service.js","sourceRoot":"","sources":["../../src/services/storage.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SessionType } from '@multiplayer-app/session-recorder-common';
|
|
2
2
|
import { Observable } from 'lib0/observable';
|
|
3
|
-
import { ISession, SessionState, ISessionRecorder, SessionRecorderOptions, EventRecorder } from './types';
|
|
3
|
+
import { ISession, SessionState, ISessionRecorder, SessionRecorderConfigs, SessionRecorderOptions, EventRecorder } from './types';
|
|
4
4
|
import { eventWithTime } from '@rrweb/types';
|
|
5
5
|
type SessionRecorderEvents = 'state-change';
|
|
6
6
|
declare class SessionRecorder extends Observable<SessionRecorderEvents> implements ISessionRecorder, EventRecorder {
|
|
@@ -37,6 +37,7 @@ declare class SessionRecorder extends Observable<SessionRecorderEvents> implemen
|
|
|
37
37
|
* React Native doesn't have HTML elements, so we return null
|
|
38
38
|
*/
|
|
39
39
|
get sessionWidgetButtonElement(): any;
|
|
40
|
+
get config(): SessionRecorderConfigs;
|
|
40
41
|
/**
|
|
41
42
|
* Initialize debugger with default or custom configurations
|
|
42
43
|
*/
|
package/dist/session-recorder.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));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 _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _sessionRecorderCommon=require("@multiplayer-app/session-recorder-common");var _observable=require("lib0/observable");var _otel=require("./otel");var _recorder=require("./recorder");var _utils=require("./utils");var _types=require("./types");var _xhr=require("./patch/xhr");var _config=require("./config");var _storage=require("./services/storage.service");var _api=require("./services/api.service");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;}function _callSuper(t,o,e){return o=(0,_getPrototypeOf2["default"])(o),(0,_possibleConstructorReturn2["default"])(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2["default"])(t).constructor):o.apply(t,e));}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}var SessionRecorder=function(_Observable){function SessionRecorder(){var _this;(0,_classCallCheck2["default"])(this,SessionRecorder);_this=_callSuper(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='';_storage.StorageService.initialize();return _this;}(0,_inherits2["default"])(SessionRecorder,_Observable);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;this.emit('state-change',[state||_types.SessionState.stopped]);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 _storage.StorageService.initialize();case 1:_context.next=2;return this._storageService.getAllSessionData();case 2: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=4;break;case 3:_context.prev=3;_t=_context["catch"](0);_utils.logger.error('SessionRecorder','Failed to load stored session data',_t);this.session=null;this.sessionId=null;this.sessionState=null;this.sessionType=_sessionRecorderCommon.SessionType.PLAIN;case 4:case"end":return _context.stop();}},_callee,this,[[0,3]]);}));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 this._loadStoredSessionData();case 1:(0,_xhr.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize||_config.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);(0,_xhr.setShouldRecordHttpData)(!this._configs.captureBody,this._configs.captureHeaders);try{this._apiService.init(this._configs);this._tracer.init(this._configs);}catch(error){_utils.logger.error('SessionRecorder','Failed to initialize API service',error);}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:(0,_utils.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({},(0,_utils.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:(0,_utils.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:"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:"recordEvent",value:function recordEvent(event){if(!this._isInitialized||this.sessionState!==_types.SessionState.started){return;}this._recorder.recordEvent(event);}},{key:"recordTouchStart",value:function recordTouchStart(x,y,target,pressure){if(!this._isInitialized||this.sessionState!==_types.SessionState.started){return;}this._recorder.recordTouchStart(x,y,target,pressure);}},{key:"recordTouchMove",value:function recordTouchMove(x,y,target,pressure){if(!this._isInitialized||this.sessionState!==_types.SessionState.started){return;}this._recorder.recordTouchMove(x,y,target,pressure);}},{key:"recordTouchEnd",value:function recordTouchEnd(x,y,target,pressure){if(!this._isInitialized||this.sessionState!==_types.SessionState.started){return;}this._recorder.recordTouchEnd(x,y,target,pressure);}},{key:"setViewShotRef",value:function setViewShotRef(ref){if(this._recorder){this._recorder.setViewShotRef(ref);}}}]);}(_observable.Observable);var _default=exports["default"]=new SessionRecorder();
|
|
1
|
+
"use strict";var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _regenerator=_interopRequireDefault(require("@babel/runtime/regenerator"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));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 _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf2=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var _sessionRecorderCommon=require("@multiplayer-app/session-recorder-common");var _observable=require("lib0/observable");var _otel=require("./otel");var _recorder=require("./recorder");var _utils=require("./utils");var _types=require("./types");var _xhr=require("./patch/xhr");var _config=require("./config");var _storage=require("./services/storage.service");var _api=require("./services/api.service");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;}function _callSuper(t,o,e){return o=(0,_getPrototypeOf2["default"])(o),(0,_possibleConstructorReturn2["default"])(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],(0,_getPrototypeOf2["default"])(t).constructor):o.apply(t,e));}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}));}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t;})();}var SessionRecorder=function(_Observable){function SessionRecorder(){var _this;(0,_classCallCheck2["default"])(this,SessionRecorder);_this=_callSuper(this,SessionRecorder);_this._isInitialized=false;_this._apiService=new _api.ApiService();_this._tracer=new _otel.TracerReactNativeSDK();_this._recorder=new _recorder.RecorderReactNativeSDK();_this._storageService=_storage.StorageService.getInstance();_this._startRequestController=null;_this._sessionId=null;_this._sessionType=_sessionRecorderCommon.SessionType.PLAIN;_this._sessionState=null;_this._session=null;_this._sessionAttributes=null;_this._error='';_this._configs=_config.BASE_CONFIG;_storage.StorageService.initialize();return _this;}(0,_inherits2["default"])(SessionRecorder,_Observable);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;this.emit('state-change',[state||_types.SessionState.stopped]);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:"config",get:function get(){return this._configs;}},{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 _storage.StorageService.initialize();case 1:_context.next=2;return this._storageService.getAllSessionData();case 2: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=4;break;case 3:_context.prev=3;_t=_context["catch"](0);_utils.logger.error('SessionRecorder','Failed to load stored session data',_t);this.session=null;this.sessionId=null;this.sessionState=null;this.sessionType=_sessionRecorderCommon.SessionType.PLAIN;case 4:case"end":return _context.stop();}},_callee,this,[[0,3]]);}));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 this._loadStoredSessionData();case 1:(0,_xhr.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize||_config.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);(0,_xhr.setShouldRecordHttpData)(!this._configs.captureBody,this._configs.captureHeaders);try{this._apiService.init(this._configs);this._tracer.init(this._configs);}catch(error){_utils.logger.error('SessionRecorder','Failed to initialize API service',error);}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:(0,_utils.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({},(0,_utils.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:(0,_utils.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:"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:"recordEvent",value:function recordEvent(event){if(!this._isInitialized||this.sessionState!==_types.SessionState.started){return;}this._recorder.recordEvent(event);}},{key:"recordTouchStart",value:function recordTouchStart(x,y,target,pressure){if(!this._isInitialized||this.sessionState!==_types.SessionState.started){return;}this._recorder.recordTouchStart(x,y,target,pressure);}},{key:"recordTouchMove",value:function recordTouchMove(x,y,target,pressure){if(!this._isInitialized||this.sessionState!==_types.SessionState.started){return;}this._recorder.recordTouchMove(x,y,target,pressure);}},{key:"recordTouchEnd",value:function recordTouchEnd(x,y,target,pressure){if(!this._isInitialized||this.sessionState!==_types.SessionState.started){return;}this._recorder.recordTouchEnd(x,y,target,pressure);}},{key:"setViewShotRef",value:function setViewShotRef(ref){if(this._recorder){this._recorder.setViewShotRef(ref);}}}]);}(_observable.Observable);var _default=exports["default"]=new SessionRecorder();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-recorder.js","sourceRoot":"","sources":["../src/session-recorder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-recorder.js","sourceRoot":"","sources":["../src/session-recorder.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/platform.d.ts
CHANGED
|
@@ -7,6 +7,9 @@ export interface PlatformInfo {
|
|
|
7
7
|
expoVersion?: string;
|
|
8
8
|
deviceType: string;
|
|
9
9
|
}
|
|
10
|
+
export declare function detectPlatform(): PlatformInfo;
|
|
11
|
+
export declare function getPlatformAttributes(): Record<string, any>;
|
|
12
|
+
export declare function isExpoEnvironment(): boolean;
|
|
10
13
|
export declare function isReactNativeEnvironment(): boolean;
|
|
11
14
|
/**
|
|
12
15
|
* Configure app metadata for non-Expo React Native apps
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@multiplayer-app/session-recorder-react-native",
|
|
3
|
-
"version": "0.0.1-beta.
|
|
3
|
+
"version": "0.0.1-beta.4",
|
|
4
4
|
"description": "Multiplayer Fullstack Session Recorder for React Native",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Multiplayer Software, Inc.",
|
|
@@ -20,10 +20,6 @@
|
|
|
20
20
|
".": {
|
|
21
21
|
"import": "./dist/index.js",
|
|
22
22
|
"require": "./dist/index.js"
|
|
23
|
-
},
|
|
24
|
-
"./expo": {
|
|
25
|
-
"import": "./dist/expo.js",
|
|
26
|
-
"require": "./dist/expo.js"
|
|
27
23
|
}
|
|
28
24
|
},
|
|
29
25
|
"engines": {
|
|
@@ -87,7 +83,8 @@
|
|
|
87
83
|
"peerDependencies": {
|
|
88
84
|
"@opentelemetry/api": "^1.9.0",
|
|
89
85
|
"react": ">=18.0.0 <20.0.0",
|
|
90
|
-
"react-native": ">=0.72.0 <0.82.0"
|
|
86
|
+
"react-native": ">=0.72.0 <0.82.0",
|
|
87
|
+
"react-native-svg": "^15.13.0"
|
|
91
88
|
},
|
|
92
89
|
"optionalDependencies": {
|
|
93
90
|
"expo-constants": "^15.0.0"
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
|
+
import { View, Text, Pressable, TextInput, Linking, Alert } from 'react-native'
|
|
3
|
+
import { WidgetTextOverridesConfig } from '../../types'
|
|
4
|
+
import { sharedStyles } from './styles'
|
|
5
|
+
|
|
6
|
+
interface FinalPopoverProps {
|
|
7
|
+
textOverrides: WidgetTextOverridesConfig
|
|
8
|
+
onStopRecording: (comment: string) => void
|
|
9
|
+
onCancelSession: () => void
|
|
10
|
+
onClose: () => void
|
|
11
|
+
isSubmitting: boolean
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const FinalPopover: React.FC<FinalPopoverProps> = ({
|
|
15
|
+
textOverrides,
|
|
16
|
+
onStopRecording,
|
|
17
|
+
onCancelSession,
|
|
18
|
+
onClose,
|
|
19
|
+
isSubmitting
|
|
20
|
+
}) => {
|
|
21
|
+
const [comment, setComment] = useState('')
|
|
22
|
+
|
|
23
|
+
const handleStopRecording = async () => {
|
|
24
|
+
try {
|
|
25
|
+
await onStopRecording(comment)
|
|
26
|
+
} catch (error) {
|
|
27
|
+
Alert.alert('Error', 'Failed to save session')
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return (
|
|
32
|
+
<View style={sharedStyles.popoverContent}>
|
|
33
|
+
<View style={sharedStyles.popoverHeader}>
|
|
34
|
+
<Pressable onPress={() => Linking.openURL('https://www.multiplayer.app')}>
|
|
35
|
+
<Text style={sharedStyles.logoText}>Multiplayer</Text>
|
|
36
|
+
</Pressable>
|
|
37
|
+
<Pressable onPress={onCancelSession} style={sharedStyles.cancelButton}>
|
|
38
|
+
<Text style={sharedStyles.cancelButtonText}>{textOverrides.cancelButtonText}</Text>
|
|
39
|
+
</Pressable>
|
|
40
|
+
<Pressable onPress={onClose} style={sharedStyles.closeButton}>
|
|
41
|
+
<Text style={sharedStyles.closeButtonText}>×</Text>
|
|
42
|
+
</Pressable>
|
|
43
|
+
</View>
|
|
44
|
+
|
|
45
|
+
<View style={sharedStyles.popoverBody}>
|
|
46
|
+
<Text style={sharedStyles.title}>{textOverrides.finalTitle}</Text>
|
|
47
|
+
<Text style={sharedStyles.description}>{textOverrides.finalDescription}</Text>
|
|
48
|
+
|
|
49
|
+
<TextInput
|
|
50
|
+
style={sharedStyles.commentInput}
|
|
51
|
+
placeholder={textOverrides.commentPlaceholder}
|
|
52
|
+
value={comment}
|
|
53
|
+
onChangeText={setComment}
|
|
54
|
+
multiline
|
|
55
|
+
numberOfLines={3}
|
|
56
|
+
textAlignVertical='top'
|
|
57
|
+
/>
|
|
58
|
+
|
|
59
|
+
<View style={sharedStyles.popoverFooter}>
|
|
60
|
+
<Pressable
|
|
61
|
+
style={[sharedStyles.actionButton, sharedStyles.stopButton]}
|
|
62
|
+
onPress={handleStopRecording}
|
|
63
|
+
disabled={isSubmitting}
|
|
64
|
+
>
|
|
65
|
+
<Text style={sharedStyles.actionButtonText}>{isSubmitting ? 'Saving...' : textOverrides.saveButtonText}</Text>
|
|
66
|
+
</Pressable>
|
|
67
|
+
</View>
|
|
68
|
+
</View>
|
|
69
|
+
</View>
|
|
70
|
+
)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export default FinalPopover
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import React, { useRef, useEffect, useMemo } from 'react'
|
|
2
|
+
import { StyleSheet, Platform, Animated, PanResponder, View, Dimensions } from 'react-native'
|
|
3
|
+
import { SessionState } from '../../types'
|
|
4
|
+
import { StorageService } from '../../services/storage.service'
|
|
5
|
+
import { RecordIcon, CapturingIcon, PausedIcon } from './icons'
|
|
6
|
+
|
|
7
|
+
interface FloatingButtonProps {
|
|
8
|
+
sessionState: SessionState | null
|
|
9
|
+
onPress: () => void
|
|
10
|
+
}
|
|
11
|
+
const buttonSize = 60
|
|
12
|
+
const rightOffset = 20
|
|
13
|
+
const topOffset = Platform.OS === 'ios' ? 60 : 40
|
|
14
|
+
|
|
15
|
+
const FloatingButton: React.FC<FloatingButtonProps> = ({ sessionState, onPress }) => {
|
|
16
|
+
const position = useRef(new Animated.ValueXY({ x: 0, y: 0 })).current // For tracking position
|
|
17
|
+
const lastPosition = useRef({ top: topOffset, right: rightOffset }) // Track the last saved position
|
|
18
|
+
const storageService = useRef(StorageService.getInstance()).current // Singleton instance
|
|
19
|
+
|
|
20
|
+
const screenBounds = useMemo(() => {
|
|
21
|
+
const { width, height } = Dimensions.get('window')
|
|
22
|
+
|
|
23
|
+
return {
|
|
24
|
+
minTop: topOffset, // Account for status bar
|
|
25
|
+
maxTop: height - buttonSize,
|
|
26
|
+
minRight: 0,
|
|
27
|
+
maxRight: width - buttonSize
|
|
28
|
+
}
|
|
29
|
+
}, [])
|
|
30
|
+
|
|
31
|
+
// Load saved position on component mount
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
const savedPosition = storageService.getFloatingButtonPosition()
|
|
34
|
+
if (savedPosition) {
|
|
35
|
+
// Convert from x,y coordinates to top,right coordinates
|
|
36
|
+
const { width, height } = Dimensions.get('window')
|
|
37
|
+
const top = savedPosition.y
|
|
38
|
+
const right = width - savedPosition.x - buttonSize
|
|
39
|
+
lastPosition.current = { top, right }
|
|
40
|
+
position.setValue({ x: right, y: top })
|
|
41
|
+
} else {
|
|
42
|
+
// Set default position
|
|
43
|
+
position.setValue({ x: lastPosition.current.right, y: lastPosition.current.top })
|
|
44
|
+
}
|
|
45
|
+
}, [])
|
|
46
|
+
|
|
47
|
+
const panResponder = useRef(
|
|
48
|
+
PanResponder.create({
|
|
49
|
+
onStartShouldSetPanResponder: () => true,
|
|
50
|
+
onMoveShouldSetPanResponder: (evt, gestureState) => {
|
|
51
|
+
// Only start dragging if movement is significant enough
|
|
52
|
+
const distance = Math.sqrt(gestureState.dx * gestureState.dx + gestureState.dy * gestureState.dy)
|
|
53
|
+
return distance > 5
|
|
54
|
+
},
|
|
55
|
+
onPanResponderGrant: () => {
|
|
56
|
+
// Set the initial position for this gesture
|
|
57
|
+
position.setValue({ x: lastPosition.current.right, y: lastPosition.current.top })
|
|
58
|
+
},
|
|
59
|
+
onPanResponderMove: (evt, gestureState) => {
|
|
60
|
+
// Calculate new position based on gesture movement
|
|
61
|
+
const newTop = lastPosition.current.top + gestureState.dy
|
|
62
|
+
const newRight = lastPosition.current.right - gestureState.dx // Invert dx for right positioning
|
|
63
|
+
|
|
64
|
+
// Update position during drag
|
|
65
|
+
position.setValue({ x: newRight, y: newTop })
|
|
66
|
+
},
|
|
67
|
+
onPanResponderRelease: (e, gestureState) => {
|
|
68
|
+
// Check if this was actually a drag (significant movement)
|
|
69
|
+
const distance = Math.sqrt(gestureState.dx * gestureState.dx + gestureState.dy * gestureState.dy)
|
|
70
|
+
|
|
71
|
+
// If it was a tap (no significant movement), trigger onPress
|
|
72
|
+
if (distance <= 5) {
|
|
73
|
+
onPress()
|
|
74
|
+
} else {
|
|
75
|
+
// Calculate new position after dragging
|
|
76
|
+
const newTop = lastPosition.current.top + gestureState.dy
|
|
77
|
+
const newRight = lastPosition.current.right - gestureState.dx // Invert dx for right positioning
|
|
78
|
+
|
|
79
|
+
// Clamp to screen bounds
|
|
80
|
+
const clampedTop = Math.max(screenBounds.minTop, Math.min(screenBounds.maxTop, newTop))
|
|
81
|
+
const clampedRight = Math.max(screenBounds.minRight, Math.min(screenBounds.maxRight, newRight))
|
|
82
|
+
|
|
83
|
+
// Update position
|
|
84
|
+
lastPosition.current = { top: clampedTop, right: clampedRight }
|
|
85
|
+
position.setValue({ x: clampedRight, y: clampedTop })
|
|
86
|
+
|
|
87
|
+
// Convert back to x,y coordinates for storage
|
|
88
|
+
const { width } = Dimensions.get('window')
|
|
89
|
+
const storagePosition = {
|
|
90
|
+
x: width - clampedRight - buttonSize,
|
|
91
|
+
y: clampedTop
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Persist position to AsyncStorage (debounced)
|
|
95
|
+
storageService.saveFloatingButtonPosition(storagePosition)
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
).current
|
|
100
|
+
|
|
101
|
+
// Memoized button icon and color for performance
|
|
102
|
+
const buttonIcon = useMemo(() => {
|
|
103
|
+
switch (sessionState) {
|
|
104
|
+
case SessionState.started:
|
|
105
|
+
return <CapturingIcon size={24} color='white' />
|
|
106
|
+
case SessionState.paused:
|
|
107
|
+
return <PausedIcon size={24} color='white' />
|
|
108
|
+
default:
|
|
109
|
+
return <RecordIcon size={19} color='white' />
|
|
110
|
+
}
|
|
111
|
+
}, [sessionState])
|
|
112
|
+
|
|
113
|
+
const buttonColor = useMemo(() => {
|
|
114
|
+
switch (sessionState) {
|
|
115
|
+
case SessionState.started:
|
|
116
|
+
return '#FF4444'
|
|
117
|
+
case SessionState.paused:
|
|
118
|
+
return '#FFA500'
|
|
119
|
+
default:
|
|
120
|
+
return '#007AFF'
|
|
121
|
+
}
|
|
122
|
+
}, [sessionState])
|
|
123
|
+
|
|
124
|
+
return (
|
|
125
|
+
<Animated.View style={[styles.draggableButton, { top: position.y, right: position.x }]} {...panResponder.panHandlers}>
|
|
126
|
+
<View style={[styles.floatingButton, { backgroundColor: buttonColor }]}>{buttonIcon}</View>
|
|
127
|
+
</Animated.View>
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const styles = StyleSheet.create({
|
|
132
|
+
draggableButton: {
|
|
133
|
+
position: 'absolute'
|
|
134
|
+
},
|
|
135
|
+
floatingButton: {
|
|
136
|
+
elevation: 8,
|
|
137
|
+
shadowRadius: 4,
|
|
138
|
+
width: buttonSize,
|
|
139
|
+
shadowColor: '#000',
|
|
140
|
+
height: buttonSize,
|
|
141
|
+
shadowOpacity: 0.25,
|
|
142
|
+
alignItems: 'center',
|
|
143
|
+
justifyContent: 'center',
|
|
144
|
+
borderRadius: buttonSize / 2,
|
|
145
|
+
shadowOffset: { width: 0, height: 2 }
|
|
146
|
+
}
|
|
147
|
+
})
|
|
148
|
+
|
|
149
|
+
export default FloatingButton
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React, { useState } from 'react'
|
|
2
|
+
import { View, Text, Pressable, Switch, Linking, Alert } from 'react-native'
|
|
3
|
+
import { SessionType } from '@multiplayer-app/session-recorder-common'
|
|
4
|
+
import { WidgetTextOverridesConfig } from '../../types'
|
|
5
|
+
import { sharedStyles } from './styles'
|
|
6
|
+
|
|
7
|
+
interface InitialPopoverProps {
|
|
8
|
+
textOverrides: WidgetTextOverridesConfig
|
|
9
|
+
showContinuousRecording: boolean
|
|
10
|
+
onStartRecording: (sessionType: SessionType) => void
|
|
11
|
+
onSaveContinuousSession: () => void
|
|
12
|
+
onClose: () => void
|
|
13
|
+
isSubmitting: boolean
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const InitialPopover: React.FC<InitialPopoverProps> = ({
|
|
17
|
+
textOverrides,
|
|
18
|
+
showContinuousRecording,
|
|
19
|
+
onStartRecording,
|
|
20
|
+
onSaveContinuousSession,
|
|
21
|
+
onClose,
|
|
22
|
+
isSubmitting
|
|
23
|
+
}) => {
|
|
24
|
+
const [continuousRecording, setContinuousRecording] = useState(false)
|
|
25
|
+
|
|
26
|
+
const handleStartRecording = async () => {
|
|
27
|
+
try {
|
|
28
|
+
const sessionType = continuousRecording ? SessionType.CONTINUOUS : SessionType.PLAIN
|
|
29
|
+
onStartRecording(sessionType)
|
|
30
|
+
} catch (error) {
|
|
31
|
+
Alert.alert('Error', 'Failed to start recording')
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<View style={sharedStyles.popoverContent}>
|
|
37
|
+
<View style={sharedStyles.popoverHeader}>
|
|
38
|
+
<Pressable onPress={() => Linking.openURL('https://www.multiplayer.app')}>
|
|
39
|
+
<Text style={sharedStyles.logoText}>Multiplayer</Text>
|
|
40
|
+
</Pressable>
|
|
41
|
+
<Pressable onPress={onClose} style={sharedStyles.closeButton}>
|
|
42
|
+
<Text style={sharedStyles.closeButtonText}>×</Text>
|
|
43
|
+
</Pressable>
|
|
44
|
+
</View>
|
|
45
|
+
|
|
46
|
+
<View style={sharedStyles.popoverBody}>
|
|
47
|
+
{showContinuousRecording && (
|
|
48
|
+
<View style={sharedStyles.continuousRecordingSection}>
|
|
49
|
+
<Text style={sharedStyles.continuousRecordingLabel}>{textOverrides.continuousRecordingLabel}</Text>
|
|
50
|
+
<Switch
|
|
51
|
+
value={continuousRecording}
|
|
52
|
+
onValueChange={setContinuousRecording}
|
|
53
|
+
trackColor={{ false: '#767577', true: '#81b0ff' }}
|
|
54
|
+
thumbColor={continuousRecording ? '#007AFF' : '#f4f3f4'}
|
|
55
|
+
/>
|
|
56
|
+
</View>
|
|
57
|
+
)}
|
|
58
|
+
|
|
59
|
+
<Text style={sharedStyles.title}>
|
|
60
|
+
{showContinuousRecording ? textOverrides.initialTitleWithContinuous : textOverrides.initialTitleWithoutContinuous}
|
|
61
|
+
</Text>
|
|
62
|
+
|
|
63
|
+
<Text style={sharedStyles.description}>
|
|
64
|
+
{showContinuousRecording
|
|
65
|
+
? textOverrides.initialDescriptionWithContinuous
|
|
66
|
+
: textOverrides.initialDescriptionWithoutContinuous}
|
|
67
|
+
</Text>
|
|
68
|
+
|
|
69
|
+
<View style={sharedStyles.popoverFooter}>
|
|
70
|
+
<Pressable style={[sharedStyles.actionButton, sharedStyles.startButton]} onPress={handleStartRecording}>
|
|
71
|
+
<Text style={sharedStyles.actionButtonText}>{textOverrides.startRecordingButtonText}</Text>
|
|
72
|
+
</Pressable>
|
|
73
|
+
</View>
|
|
74
|
+
|
|
75
|
+
{showContinuousRecording && continuousRecording && (
|
|
76
|
+
<View style={sharedStyles.continuousOverlay}>
|
|
77
|
+
<View style={sharedStyles.continuousOverlayContent}>
|
|
78
|
+
<Text style={sharedStyles.continuousOverlayTitle}>🔴 {textOverrides.continuousOverlayTitle}</Text>
|
|
79
|
+
<Text style={sharedStyles.continuousOverlayDescription}>{textOverrides.continuousOverlayDescription}</Text>
|
|
80
|
+
</View>
|
|
81
|
+
<Pressable
|
|
82
|
+
style={[sharedStyles.actionButton, sharedStyles.saveButton]}
|
|
83
|
+
onPress={onSaveContinuousSession}
|
|
84
|
+
disabled={isSubmitting}
|
|
85
|
+
>
|
|
86
|
+
<Text style={sharedStyles.actionButtonText}>{textOverrides.saveLastSnapshotButtonText}</Text>
|
|
87
|
+
</Pressable>
|
|
88
|
+
</View>
|
|
89
|
+
)}
|
|
90
|
+
</View>
|
|
91
|
+
</View>
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export default InitialPopover
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react'
|
|
2
|
+
import { Animated, View, Pressable, StyleSheet, Dimensions, Modal } from 'react-native'
|
|
3
|
+
|
|
4
|
+
const { height: SCREEN_HEIGHT } = Dimensions.get('window')
|
|
5
|
+
const MODAL_HEIGHT = SCREEN_HEIGHT * 0.7
|
|
6
|
+
|
|
7
|
+
interface ModalContainerProps {
|
|
8
|
+
isVisible: boolean
|
|
9
|
+
onClose: () => void
|
|
10
|
+
children: React.ReactNode
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const ModalContainer: React.FC<ModalContainerProps> = ({ isVisible, onClose, children }) => {
|
|
14
|
+
const fadeAnim = useRef(new Animated.Value(0)).current
|
|
15
|
+
const [animatedFinished, setAnimatedFinished] = useState(false)
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
Animated.timing(fadeAnim, {
|
|
19
|
+
toValue: isVisible ? 1 : 0,
|
|
20
|
+
duration: 300,
|
|
21
|
+
useNativeDriver: true
|
|
22
|
+
}).start()
|
|
23
|
+
}, [isVisible, fadeAnim])
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<>
|
|
27
|
+
{isVisible && (
|
|
28
|
+
<Animated.View style={{ ...styles.backdrop, opacity: fadeAnim }}>
|
|
29
|
+
<Pressable style={styles.backdropPressable} onPress={onClose} />
|
|
30
|
+
</Animated.View>
|
|
31
|
+
)}
|
|
32
|
+
<Modal visible={isVisible} transparent animationType='slide' onRequestClose={onClose}>
|
|
33
|
+
<View style={styles.modal}>
|
|
34
|
+
<View style={styles.modalHandle} />
|
|
35
|
+
{children}
|
|
36
|
+
</View>
|
|
37
|
+
</Modal>
|
|
38
|
+
</>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const styles = StyleSheet.create({
|
|
43
|
+
backdrop: {
|
|
44
|
+
position: 'absolute',
|
|
45
|
+
top: 0,
|
|
46
|
+
left: 0,
|
|
47
|
+
right: 0,
|
|
48
|
+
bottom: 0,
|
|
49
|
+
backgroundColor: 'rgba(0, 0, 0, 0.5)'
|
|
50
|
+
},
|
|
51
|
+
backdropPressable: {
|
|
52
|
+
flex: 1
|
|
53
|
+
},
|
|
54
|
+
modal: {
|
|
55
|
+
position: 'absolute',
|
|
56
|
+
bottom: 0,
|
|
57
|
+
left: 0,
|
|
58
|
+
right: 0,
|
|
59
|
+
height: MODAL_HEIGHT,
|
|
60
|
+
backgroundColor: 'white',
|
|
61
|
+
borderTopLeftRadius: 20,
|
|
62
|
+
borderTopRightRadius: 20,
|
|
63
|
+
elevation: 10,
|
|
64
|
+
shadowColor: '#000',
|
|
65
|
+
shadowOffset: { width: 0, height: -2 },
|
|
66
|
+
shadowOpacity: 0.25,
|
|
67
|
+
shadowRadius: 4
|
|
68
|
+
},
|
|
69
|
+
modalHandle: {
|
|
70
|
+
width: 40,
|
|
71
|
+
height: 4,
|
|
72
|
+
backgroundColor: '#D1D5DB',
|
|
73
|
+
borderRadius: 2,
|
|
74
|
+
alignSelf: 'center',
|
|
75
|
+
marginTop: 8,
|
|
76
|
+
marginBottom: 8
|
|
77
|
+
}
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
export default ModalContainer
|