@multiplayer-app/session-recorder-react-native 1.2.37 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/lib/module/config/constants.js +3 -0
  2. package/lib/module/config/constants.js.map +1 -1
  3. package/lib/module/config/defaults.js +2 -1
  4. package/lib/module/config/defaults.js.map +1 -1
  5. package/lib/module/config/session-recorder.js +2 -1
  6. package/lib/module/config/session-recorder.js.map +1 -1
  7. package/lib/module/recorder/index.js +7 -18
  8. package/lib/module/recorder/index.js.map +1 -1
  9. package/lib/module/services/api.service.js +2 -2
  10. package/lib/module/services/api.service.js.map +1 -1
  11. package/lib/module/services/socket.service.js +176 -0
  12. package/lib/module/services/socket.service.js.map +1 -0
  13. package/lib/module/session-recorder.js +67 -11
  14. package/lib/module/session-recorder.js.map +1 -1
  15. package/lib/module/types/session-recorder.js.map +1 -1
  16. package/lib/module/types/session.js.map +1 -1
  17. package/lib/module/utils/logger.js +1 -1
  18. package/lib/typescript/src/config/constants.d.ts +3 -0
  19. package/lib/typescript/src/config/constants.d.ts.map +1 -1
  20. package/lib/typescript/src/config/defaults.d.ts.map +1 -1
  21. package/lib/typescript/src/config/session-recorder.d.ts.map +1 -1
  22. package/lib/typescript/src/recorder/index.d.ts +3 -4
  23. package/lib/typescript/src/recorder/index.d.ts.map +1 -1
  24. package/lib/typescript/src/services/api.service.d.ts +10 -4
  25. package/lib/typescript/src/services/api.service.d.ts.map +1 -1
  26. package/lib/typescript/src/services/socket.service.d.ts +39 -0
  27. package/lib/typescript/src/services/socket.service.d.ts.map +1 -0
  28. package/lib/typescript/src/session-recorder.d.ts +17 -1
  29. package/lib/typescript/src/session-recorder.d.ts.map +1 -1
  30. package/lib/typescript/src/types/session-recorder.d.ts +12 -1
  31. package/lib/typescript/src/types/session-recorder.d.ts.map +1 -1
  32. package/lib/typescript/src/types/session.d.ts +1 -2
  33. package/lib/typescript/src/types/session.d.ts.map +1 -1
  34. package/package.json +2 -2
  35. package/src/config/constants.ts +6 -0
  36. package/src/config/defaults.ts +29 -27
  37. package/src/config/session-recorder.ts +2 -0
  38. package/src/recorder/index.ts +8 -21
  39. package/src/services/api.service.ts +15 -6
  40. package/src/services/socket.service.ts +225 -0
  41. package/src/session-recorder.ts +71 -11
  42. package/src/types/session-recorder.ts +14 -1
  43. package/src/types/session.ts +3 -2
  44. package/src/utils/logger.ts +1 -1
  45. package/lib/module/recorder/eventExporter.js +0 -130
  46. package/lib/module/recorder/eventExporter.js.map +0 -1
  47. package/lib/module/types/client-type.enum.js +0 -9
  48. package/lib/module/types/client-type.enum.js.map +0 -1
  49. package/lib/typescript/src/recorder/eventExporter.d.ts +0 -25
  50. package/lib/typescript/src/recorder/eventExporter.d.ts.map +0 -1
  51. package/lib/typescript/src/types/client-type.enum.d.ts +0 -6
  52. package/lib/typescript/src/types/client-type.enum.d.ts.map +0 -1
  53. package/src/recorder/eventExporter.ts +0 -150
  54. package/src/types/client-type.enum.ts +0 -5
@@ -14,6 +14,9 @@ export const SESSION_AUTO_CREATED = 'debug-session:auto-created';
14
14
  export const SESSION_ADD_EVENT = 'debug-session:rrweb:add-event';
15
15
  export const DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE = 100000;
16
16
  export const SESSION_RESPONSE = 'multiplayer-debug-session-response';
17
+ export const REMOTE_SESSION_RECORDING_START = 'remote-session-recording:start';
18
+ export const REMOTE_SESSION_RECORDING_STOP = 'remote-session-recording:stop';
19
+ export const SOCKET_SET_USER_EVENT = 'socket:set-user';
17
20
  export const CONTINUOUS_DEBUGGING_TIMEOUT = 60000; // 1 minutes
18
21
 
19
22
  export const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30; // TODO: move to shared config otel core
@@ -1 +1 @@
1
- {"version":3,"names":["OTEL_MP_SAMPLE_TRACE_RATIO","SESSION_ID_PROP_NAME","SESSION_SHORT_ID_PROP_NAME","SESSION_STATE_PROP_NAME","SESSION_TYPE_PROP_NAME","SESSION_PROP_NAME","SESSION_STARTED_EVENT","SESSION_STOPPED_EVENT","SESSION_SUBSCRIBE_EVENT","SESSION_UNSUBSCRIBE_EVENT","SESSION_AUTO_CREATED","SESSION_ADD_EVENT","DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE","SESSION_RESPONSE","CONTINUOUS_DEBUGGING_TIMEOUT","DEBUG_SESSION_MAX_DURATION_SECONDS","OTEL_IGNORE_URLS"],"sourceRoot":"../../../src","sources":["config/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,0BAA0B,GAAG,IAAI;AAE9C,OAAO,MAAMC,oBAAoB,GAAG,wBAAwB;AAE5D,OAAO,MAAMC,0BAA0B,GAAG,8BAA8B;AAExE,OAAO,MAAMC,uBAAuB,GAAG,2BAA2B;AAElE,OAAO,MAAMC,sBAAsB,GAAG,0BAA0B;AAEhE,OAAO,MAAMC,iBAAiB,GAAG,0BAA0B;AAE3D,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAE5D,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAE5D,OAAO,MAAMC,uBAAuB,GAAG,yBAAyB;AAEhE,OAAO,MAAMC,yBAAyB,GAAG,2BAA2B;AAEpE,OAAO,MAAMC,oBAAoB,GAAG,4BAA4B;AAEhE,OAAO,MAAMC,iBAAiB,GAAG,+BAA+B;AAEhE,OAAO,MAAMC,uCAAuC,GAAG,MAAM;AAE7D,OAAO,MAAMC,gBAAgB,GAAG,oCAAoC;AAEpE,OAAO,MAAMC,4BAA4B,GAAG,KAAK,CAAC,CAAC;;AAEnD,OAAO,MAAMC,kCAAkC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;;AAEhE;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,gBAAgB,GAAG;AAC9B;AACA,gBAAgB;AAChB;AACA,0CAA0C,EAC1C,gDAAgD,EAChD,kDAAkD;AAElD;AACA,qDAAqD,EACrD,2DAA2D,EAC3D,6DAA6D;AAE7D;AACA,gDAAgD;AAEhD;AACA,+CAA+C,EAC/C,8CAA8C,EAC9C,6CAA6C,EAC7C,4DAA4D,EAC5D,4DAA4D,EAC5D;;AAEA;AACA;AAAA,CACD","ignoreList":[]}
1
+ {"version":3,"names":["OTEL_MP_SAMPLE_TRACE_RATIO","SESSION_ID_PROP_NAME","SESSION_SHORT_ID_PROP_NAME","SESSION_STATE_PROP_NAME","SESSION_TYPE_PROP_NAME","SESSION_PROP_NAME","SESSION_STARTED_EVENT","SESSION_STOPPED_EVENT","SESSION_SUBSCRIBE_EVENT","SESSION_UNSUBSCRIBE_EVENT","SESSION_AUTO_CREATED","SESSION_ADD_EVENT","DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE","SESSION_RESPONSE","REMOTE_SESSION_RECORDING_START","REMOTE_SESSION_RECORDING_STOP","SOCKET_SET_USER_EVENT","CONTINUOUS_DEBUGGING_TIMEOUT","DEBUG_SESSION_MAX_DURATION_SECONDS","OTEL_IGNORE_URLS"],"sourceRoot":"../../../src","sources":["config/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,0BAA0B,GAAG,IAAI;AAE9C,OAAO,MAAMC,oBAAoB,GAAG,wBAAwB;AAE5D,OAAO,MAAMC,0BAA0B,GAAG,8BAA8B;AAExE,OAAO,MAAMC,uBAAuB,GAAG,2BAA2B;AAElE,OAAO,MAAMC,sBAAsB,GAAG,0BAA0B;AAEhE,OAAO,MAAMC,iBAAiB,GAAG,0BAA0B;AAE3D,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAE5D,OAAO,MAAMC,qBAAqB,GAAG,uBAAuB;AAE5D,OAAO,MAAMC,uBAAuB,GAAG,yBAAyB;AAEhE,OAAO,MAAMC,yBAAyB,GAAG,2BAA2B;AAEpE,OAAO,MAAMC,oBAAoB,GAAG,4BAA4B;AAEhE,OAAO,MAAMC,iBAAiB,GAAG,+BAA+B;AAEhE,OAAO,MAAMC,uCAAuC,GAAG,MAAM;AAE7D,OAAO,MAAMC,gBAAgB,GAAG,oCAAoC;AAEpE,OAAO,MAAMC,8BAA8B,GAAG,gCAAgC;AAE9E,OAAO,MAAMC,6BAA6B,GAAG,+BAA+B;AAE5E,OAAO,MAAMC,qBAAqB,GAAG,iBAAiB;AAEtD,OAAO,MAAMC,4BAA4B,GAAG,KAAK,CAAC,CAAC;;AAEnD,OAAO,MAAMC,kCAAkC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;;AAEhE;AACA;AACA;;AAEA;AACA,OAAO,MAAMC,gBAAgB,GAAG;AAC9B;AACA,gBAAgB;AAChB;AACA,0CAA0C,EAC1C,gDAAgD,EAChD,kDAAkD;AAElD;AACA,qDAAqD,EACrD,2DAA2D,EAC3D,6DAA6D;AAE7D;AACA,gDAAgD;AAEhD;AACA,+CAA+C,EAC/C,8CAA8C,EAC9C,6CAA6C,EAC7C,4DAA4D,EAC5D,4DAA4D,EAC5D;;AAEA;AACA;AAAA,CACD","ignoreList":[]}
@@ -76,6 +76,7 @@ export const BASE_CONFIG = {
76
76
  logger: {
77
77
  enabled: false,
78
78
  level: LogLevel.INFO
79
- }
79
+ },
80
+ useWebsocket: true
80
81
  };
81
82
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SessionRecorderSdk","MULTIPLAYER_BASE_API_URL","MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL","LogLevel","WidgetButtonPlacement","OTEL_MP_SAMPLE_TRACE_RATIO","DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE","mask","sensitiveFields","sensitiveHeaders","DEFAULT_MASKING_CONFIG","isContentMaskingEnabled","maskBody","maskHeaders","maskBodyFieldsList","maskHeadersList","headersToInclude","headersToExclude","maskImages","maskLabels","maskButtons","maskWebViews","maskTextInputs","maskSandboxedViews","DEFAULT_WIDGET_TEXT_CONFIG","initialTitleWithContinuous","initialTitleWithoutContinuous","initialDescriptionWithContinuous","initialDescriptionWithoutContinuous","continuousRecordingLabel","startRecordingButtonText","finalTitle","finalDescription","commentPlaceholder","saveButtonText","cancelButtonText","continuousOverlayTitle","continuousOverlayDescription","saveLastSnapshotButtonText","submitDialogTitle","submitDialogSubtitle","submitDialogCommentLabel","submitDialogCommentPlaceholder","submitDialogSubmitText","submitDialogCancelText","BASE_CONFIG","apiKey","version","application","environment","showContinuousRecording","widget","enabled","button","visible","placement","bottomRight","textOverrides","apiBaseUrl","exporterEndpoint","schemifyDocSpanPayload","ignoreUrls","propagateTraceHeaderCorsUrls","sampleTraceRatio","maxCapturingHttpPayloadSize","captureBody","captureHeaders","masking","recordScreen","recordGestures","recordNavigation","logger","level","INFO"],"sourceRoot":"../../../src","sources":["config/defaults.ts"],"mappings":";;AAAA,SACEA,kBAAkB,EAClBC,wBAAwB,EACxBC,iDAAiD,QAC5C,0CAA0C;AACjD,SACEC,QAAQ,EACRC,qBAAqB,QAEhB,mBAAU;AACjB,SACEC,0BAA0B,EAC1BC,uCAAuC,QAClC,gBAAa;AAEpB,MAAM;EAAEC,IAAI;EAAEC,eAAe;EAAEC;AAAiB,CAAC,GAAGT,kBAAkB;AAEtE,OAAO,MAAMU,sBAAyD,GAAG;EACvEC,uBAAuB,EAAE,IAAI;EAC7BC,QAAQ,EAAEL,IAAI,CAACC,eAAe,CAAC;EAC/BK,WAAW,EAAEN,IAAI,CAACE,gBAAgB,CAAC;EACnCK,kBAAkB,EAAEN,eAAe;EACnCO,eAAe,EAAEN,gBAAgB;EACjCO,gBAAgB,EAAE,EAAE;EACpBC,gBAAgB,EAAE,EAAE;EACpB;EACAC,UAAU,EAAE,KAAK;EACjBC,UAAU,EAAE,KAAK;EACjBC,WAAW,EAAE,KAAK;EAClBC,YAAY,EAAE,KAAK;EACnBC,cAAc,EAAE,IAAI;EACpBC,kBAAkB,EAAE;AACtB,CAAC;AAED,OAAO,MAAMC,0BAA6E,GACxF;EACEC,0BAA0B,EAAE,uBAAuB;EACnDC,6BAA6B,EAAE,uBAAuB;EACtDC,gCAAgC,EAC9B,kEAAkE;EACpEC,mCAAmC,EACjC,kEAAkE;EACpEC,wBAAwB,EAAE,sBAAsB;EAChDC,wBAAwB,EAAE,iBAAiB;EAC3CC,UAAU,EAAE,iBAAiB;EAC7BC,gBAAgB,EACd,0FAA0F;EAC5FC,kBAAkB,EAAE,kBAAkB;EACtCC,cAAc,EAAE,kBAAkB;EAClCC,gBAAgB,EAAE,kBAAkB;EACpCC,sBAAsB,EAAE,mCAAmC;EAC3DC,4BAA4B,EAC1B,mOAAmO;EACrOC,0BAA0B,EAAE,gBAAgB;EAC5CC,iBAAiB,EAAE,gBAAgB;EACnCC,oBAAoB,EAClB,iJAAiJ;EACnJC,wBAAwB,EAAE,+CAA+C;EACzEC,8BAA8B,EAAE,kBAAkB;EAClDC,sBAAsB,EAAE,MAAM;EAC9BC,sBAAsB,EAAE;AAC1B,CAAC;AAEH,OAAO,MAAMC,WAAmC,GAAG;EACjDC,MAAM,EAAE,EAAE;EAEVC,OAAO,EAAE,EAAE;EACXC,WAAW,EAAE,EAAE;EACfC,WAAW,EAAE,EAAE;EAEfC,uBAAuB,EAAE,IAAI;EAE7BC,MAAM,EAAE;IACNC,OAAO,EAAE,IAAI;IACbC,MAAM,EAAE;MACNC,OAAO,EAAE,IAAI;MACbC,SAAS,EAAEnD,qBAAqB,CAACoD;IACnC,CAAC;IACDC,aAAa,EAAEjC;EACjB,CAAC;EAEDkC,UAAU,EAAEzD,wBAAwB;EACpC0D,gBAAgB,EAAEzD,iDAAiD;EAEnE0D,sBAAsB,EAAE,IAAI;EAE5BC,UAAU,EAAE,EAAE;EACdC,4BAA4B,EAAE,EAAE;EAEhCC,gBAAgB,EAAE1D,0BAA0B;EAC5C2D,2BAA2B,EAAE1D,uCAAuC;EAEpE2D,WAAW,EAAE,IAAI;EACjBC,cAAc,EAAE,IAAI;EACpBC,OAAO,EAAEzD,sBAAsB;EAE/B0D,YAAY,EAAE,IAAI;EAClBC,cAAc,EAAE,IAAI;EACpBC,gBAAgB,EAAE,IAAI;EAEtBC,MAAM,EAAE;IACNnB,OAAO,EAAE,KAAK;IACdoB,KAAK,EAAErE,QAAQ,CAACsE;EAClB;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["SessionRecorderSdk","MULTIPLAYER_BASE_API_URL","MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL","LogLevel","WidgetButtonPlacement","OTEL_MP_SAMPLE_TRACE_RATIO","DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE","mask","sensitiveFields","sensitiveHeaders","DEFAULT_MASKING_CONFIG","isContentMaskingEnabled","maskBody","maskHeaders","maskBodyFieldsList","maskHeadersList","headersToInclude","headersToExclude","maskImages","maskLabels","maskButtons","maskWebViews","maskTextInputs","maskSandboxedViews","DEFAULT_WIDGET_TEXT_CONFIG","initialTitleWithContinuous","initialTitleWithoutContinuous","initialDescriptionWithContinuous","initialDescriptionWithoutContinuous","continuousRecordingLabel","startRecordingButtonText","finalTitle","finalDescription","commentPlaceholder","saveButtonText","cancelButtonText","continuousOverlayTitle","continuousOverlayDescription","saveLastSnapshotButtonText","submitDialogTitle","submitDialogSubtitle","submitDialogCommentLabel","submitDialogCommentPlaceholder","submitDialogSubmitText","submitDialogCancelText","BASE_CONFIG","apiKey","version","application","environment","showContinuousRecording","widget","enabled","button","visible","placement","bottomRight","textOverrides","apiBaseUrl","exporterEndpoint","schemifyDocSpanPayload","ignoreUrls","propagateTraceHeaderCorsUrls","sampleTraceRatio","maxCapturingHttpPayloadSize","captureBody","captureHeaders","masking","recordScreen","recordGestures","recordNavigation","logger","level","INFO","useWebsocket"],"sourceRoot":"../../../src","sources":["config/defaults.ts"],"mappings":";;AAAA,SACEA,kBAAkB,EAClBC,wBAAwB,EACxBC,iDAAiD,QAC5C,0CAA0C;AACjD,SACEC,QAAQ,EACRC,qBAAqB,QAEhB,mBAAU;AACjB,SACEC,0BAA0B,EAC1BC,uCAAuC,QAClC,gBAAa;AAEpB,MAAM;EAAEC,IAAI;EAAEC,eAAe;EAAEC;AAAiB,CAAC,GAAGT,kBAAkB;AAEtE,OAAO,MAAMU,sBAAyD,GAAG;EACvEC,uBAAuB,EAAE,IAAI;EAC7BC,QAAQ,EAAEL,IAAI,CAACC,eAAe,CAAC;EAC/BK,WAAW,EAAEN,IAAI,CAACE,gBAAgB,CAAC;EACnCK,kBAAkB,EAAEN,eAAe;EACnCO,eAAe,EAAEN,gBAAgB;EACjCO,gBAAgB,EAAE,EAAE;EACpBC,gBAAgB,EAAE,EAAE;EACpB;EACAC,UAAU,EAAE,KAAK;EACjBC,UAAU,EAAE,KAAK;EACjBC,WAAW,EAAE,KAAK;EAClBC,YAAY,EAAE,KAAK;EACnBC,cAAc,EAAE,IAAI;EACpBC,kBAAkB,EAAE;AACtB,CAAC;AAED,OAAO,MAAMC,0BAA6E,GAC1F;EACEC,0BAA0B,EAAE,uBAAuB;EACnDC,6BAA6B,EAAE,uBAAuB;EACtDC,gCAAgC,EAC9B,kEAAkE;EACpEC,mCAAmC,EACjC,kEAAkE;EACpEC,wBAAwB,EAAE,sBAAsB;EAChDC,wBAAwB,EAAE,iBAAiB;EAC3CC,UAAU,EAAE,iBAAiB;EAC7BC,gBAAgB,EACd,0FAA0F;EAC5FC,kBAAkB,EAAE,kBAAkB;EACtCC,cAAc,EAAE,kBAAkB;EAClCC,gBAAgB,EAAE,kBAAkB;EACpCC,sBAAsB,EAAE,mCAAmC;EAC3DC,4BAA4B,EAC1B,mOAAmO;EACrOC,0BAA0B,EAAE,gBAAgB;EAC5CC,iBAAiB,EAAE,gBAAgB;EACnCC,oBAAoB,EAClB,iJAAiJ;EACnJC,wBAAwB,EAAE,+CAA+C;EACzEC,8BAA8B,EAAE,kBAAkB;EAClDC,sBAAsB,EAAE,MAAM;EAC9BC,sBAAsB,EAAE;AAC1B,CAAC;AAED,OAAO,MAAMC,WAAmC,GAAG;EACjDC,MAAM,EAAE,EAAE;EAEVC,OAAO,EAAE,EAAE;EACXC,WAAW,EAAE,EAAE;EACfC,WAAW,EAAE,EAAE;EAEfC,uBAAuB,EAAE,IAAI;EAE7BC,MAAM,EAAE;IACNC,OAAO,EAAE,IAAI;IACbC,MAAM,EAAE;MACNC,OAAO,EAAE,IAAI;MACbC,SAAS,EAAEnD,qBAAqB,CAACoD;IACnC,CAAC;IACDC,aAAa,EAAEjC;EACjB,CAAC;EAEDkC,UAAU,EAAEzD,wBAAwB;EACpC0D,gBAAgB,EAAEzD,iDAAiD;EAEnE0D,sBAAsB,EAAE,IAAI;EAE5BC,UAAU,EAAE,EAAE;EACdC,4BAA4B,EAAE,EAAE;EAEhCC,gBAAgB,EAAE1D,0BAA0B;EAC5C2D,2BAA2B,EAAE1D,uCAAuC;EAEpE2D,WAAW,EAAE,IAAI;EACjBC,cAAc,EAAE,IAAI;EACpBC,OAAO,EAAEzD,sBAAsB;EAE/B0D,YAAY,EAAE,IAAI;EAClBC,cAAc,EAAE,IAAI;EACpBC,gBAAgB,EAAE,IAAI;EAEtBC,MAAM,EAAE;IACNnB,OAAO,EAAE,KAAK;IACdoB,KAAK,EAAErE,QAAQ,CAACsE;EAClB,CAAC;EAEDC,YAAY,EAAE;AAChB,CAAC","ignoreList":[]}
@@ -38,7 +38,8 @@ export const getSessionRecorderConfig = c => {
38
38
  recordNavigation: isValidBoolean(c.recordNavigation, BASE_CONFIG.recordNavigation),
39
39
  masking: getMaskingConfig(c.masking),
40
40
  widget: getWidgetConfig(c.widget),
41
- logger: getLoggerConfig(c.logger)
41
+ logger: getLoggerConfig(c.logger),
42
+ useWebsocket: isValidBoolean(c.useWebsocket, BASE_CONFIG.useWebsocket)
42
43
  };
43
44
  };
44
45
  //# sourceMappingURL=session-recorder.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LogLevel","BASE_CONFIG","getMaskingConfig","isValidString","isValidNumber","isValidBoolean","isValidArray","getWidgetConfig","getLoggerConfig","config","logger","level","INFO","enabled","getSessionRecorderConfig","c","apiKey","version","application","environment","exporterEndpoint","apiBaseUrl","showContinuousRecording","ignoreUrls","sampleTraceRatio","propagateTraceHeaderCorsUrls","schemifyDocSpanPayload","maxCapturingHttpPayloadSize","captureBody","captureHeaders","recordScreen","recordGestures","recordNavigation","masking","widget"],"sourceRoot":"../../../src","sources":["config/session-recorder.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["LogLevel","BASE_CONFIG","getMaskingConfig","isValidString","isValidNumber","isValidBoolean","isValidArray","getWidgetConfig","getLoggerConfig","config","logger","level","INFO","enabled","getSessionRecorderConfig","c","apiKey","version","application","environment","exporterEndpoint","apiBaseUrl","showContinuousRecording","ignoreUrls","sampleTraceRatio","propagateTraceHeaderCorsUrls","schemifyDocSpanPayload","maxCapturingHttpPayloadSize","captureBody","captureHeaders","recordScreen","recordGestures","recordNavigation","masking","widget","useWebsocket"],"sourceRoot":"../../../src","sources":["config/session-recorder.ts"],"mappings":"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","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { SessionType } from '@multiplayer-app/session-recorder-common';
4
4
  // import { pack } from '@rrweb/packer' // Removed to avoid blob creation issues in Hermes
5
- import { EventExporter } from "./eventExporter.js";
5
+
6
6
  import { logger } from "../utils/index.js";
7
7
  import { ScreenRecorder } from "./screenRecorder.js";
8
8
  import { GestureRecorder } from "./gestureRecorder.js";
@@ -16,24 +16,13 @@ export class RecorderReactNativeSDK {
16
16
  this.screenRecorder = new ScreenRecorder();
17
17
  this.gestureRecorder = new GestureRecorder();
18
18
  this.navigationTracker = new NavigationTracker();
19
- this.exporter = new EventExporter({
20
- socketUrl: '',
21
- apiKey: ''
22
- });
23
19
  }
24
- init(config) {
20
+ init(config, socketService) {
25
21
  this.config = config;
22
+ this.socketService = socketService;
26
23
  this.screenRecorder.init(config, this);
27
24
  this.navigationTracker.init(config, this.screenRecorder);
28
25
  this.gestureRecorder.init(config, this, this.screenRecorder);
29
- this.exporter.setApiKey(config.apiKey);
30
- this.exporter.setSocketUrl(config.apiBaseUrl);
31
- }
32
- setApiKey(apiKey) {
33
- this.exporter.setApiKey(apiKey);
34
- }
35
- setSocketUrl(socketUrl) {
36
- this.exporter.setSocketUrl(socketUrl);
37
26
  }
38
27
  start(sessionId, sessionType) {
39
28
  if (!this.config) {
@@ -60,7 +49,7 @@ export class RecorderReactNativeSDK {
60
49
  this.gestureRecorder.stop();
61
50
  this.navigationTracker.stop();
62
51
  this.screenRecorder.stop();
63
- this.exporter?.close();
52
+ this.socketService?.close();
64
53
  }
65
54
  setNavigationRef(ref) {
66
55
  this.navigationTracker.setNavigationRef(ref);
@@ -82,11 +71,11 @@ export class RecorderReactNativeSDK {
82
71
  if (!this.isRecording) {
83
72
  return;
84
73
  }
85
- if (this.exporter) {
86
- logger.debug('RecorderReactNativeSDK', 'Sending to exporter', event);
74
+ if (this.socketService) {
75
+ logger.debug('RecorderReactNativeSDK', 'Sending to socket service', event);
87
76
  // Skip packing to avoid blob creation issues in Hermes
88
77
  // const packedEvent = pack(event)
89
- this.exporter.send({
78
+ this.socketService.send({
90
79
  event: event,
91
80
  // Send raw event instead of packed
92
81
  eventType: event.type,
@@ -1 +1 @@
1
- {"version":3,"names":["SessionType","EventExporter","logger","ScreenRecorder","GestureRecorder","NavigationTracker","RecorderReactNativeSDK","isRecording","recordedEvents","sessionId","sessionType","MANUAL","constructor","screenRecorder","gestureRecorder","navigationTracker","exporter","socketUrl","apiKey","init","config","setApiKey","setSocketUrl","apiBaseUrl","start","Error","recordScreen","recordGestures","recordNavigation","stop","close","setNavigationRef","ref","setViewShotRef","recordEvent","event","debug","send","eventType","type","timestamp","debugSessionId","debugSessionType","recordTouchStart","x","y","target","pressure","recordTouchMove","recordTouchEnd","getRecordedEvents","clearRecordedEvents","getRecordingStats","totalEvents","length"],"sourceRoot":"../../../src","sources":["recorder/index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SessionType","logger","ScreenRecorder","GestureRecorder","NavigationTracker","RecorderReactNativeSDK","isRecording","recordedEvents","sessionId","sessionType","MANUAL","constructor","screenRecorder","gestureRecorder","navigationTracker","init","config","socketService","start","Error","recordScreen","recordGestures","recordNavigation","stop","close","setNavigationRef","ref","setViewShotRef","recordEvent","event","debug","send","eventType","type","timestamp","debugSessionId","debugSessionType","recordTouchStart","x","y","target","pressure","recordTouchMove","recordTouchEnd","getRecordedEvents","clearRecordedEvents","getRecordingStats","totalEvents","length"],"sourceRoot":"../../../src","sources":["recorder/index.ts"],"mappings":"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","ignoreList":[]}
@@ -140,8 +140,8 @@ export class ApiService {
140
140
  }
141
141
 
142
142
  /**
143
- * Check debug session should be started remotely
144
- */
143
+ * Check debug session should be started remotely
144
+ */
145
145
  async checkRemoteSession(requestBody, signal) {
146
146
  return this.makeRequest('/remote-debug-session/check', 'POST', requestBody, signal);
147
147
  }
@@ -1 +1 @@
1
- {"version":3,"names":["ApiService","baseUrl","constructor","config","apiKey","apiBaseUrl","exporterEndpoint","init","updateConfigs","setApiKey","makeRequest","path","method","body","signal","url","params","JSON","stringify","headers","response","fetch","ok","Error","statusText","status","json","error","name","message","startSession","request","res","stopSession","sessionId","cancelSession","startContinuousDebugSession","saveContinuousDebugSession","stopContinuousDebugSession","checkRemoteSession","requestBody"],"sourceRoot":"../../../src","sources":["services/api.service.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ApiService","baseUrl","constructor","config","apiKey","apiBaseUrl","exporterEndpoint","init","updateConfigs","setApiKey","makeRequest","path","method","body","signal","url","params","JSON","stringify","headers","response","fetch","ok","Error","statusText","status","json","error","name","message","startSession","request","res","stopSession","sessionId","cancelSession","startContinuousDebugSession","saveContinuousDebugSession","stopContinuousDebugSession","checkRemoteSession","requestBody"],"sourceRoot":"../../../src","sources":["services/api.service.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+
3
+ import io from 'socket.io-client';
4
+ import { Observable } from 'lib0/observable';
5
+ import { logger } from "../utils/index.js";
6
+ import { SESSION_ADD_EVENT, SESSION_AUTO_CREATED, SESSION_STOPPED_EVENT, SESSION_SUBSCRIBE_EVENT, SESSION_UNSUBSCRIBE_EVENT, SOCKET_SET_USER_EVENT, REMOTE_SESSION_RECORDING_START, REMOTE_SESSION_RECORDING_STOP, SESSION_STARTED_EVENT } from "../config/index.js";
7
+ const MAX_RECONNECTION_ATTEMPTS = 2;
8
+ export class SocketService extends Observable {
9
+ socket = null;
10
+ queue = [];
11
+ isConnecting = false;
12
+ isConnected = false;
13
+ attempts = 0;
14
+ sessionId = null;
15
+ constructor() {
16
+ super();
17
+ this.options = {
18
+ apiKey: '',
19
+ socketUrl: '',
20
+ keepAlive: false
21
+ };
22
+ }
23
+
24
+ /**
25
+ * Initialize the socket service
26
+ * @param config - Socket service configuration
27
+ */
28
+ init(config) {
29
+ this.options = {
30
+ ...this.options,
31
+ ...config
32
+ };
33
+ if (this.options.keepAlive && this.options.socketUrl && this.options.apiKey) {
34
+ this._initConnection();
35
+ }
36
+ }
37
+
38
+ /**
39
+ * Update the socket service configuration
40
+ * @param config - Partial configuration to update
41
+ */
42
+ updateConfigs(config) {
43
+ // If any config changed, reconnect if connected
44
+ const hasChanges = Object.keys(config).some(key => {
45
+ const typedKey = key;
46
+ return config[typedKey] !== undefined && config[typedKey] !== this.options[typedKey];
47
+ });
48
+ if (hasChanges) {
49
+ this.options = {
50
+ ...this.options,
51
+ ...config
52
+ };
53
+ if (this.socket?.connected) {
54
+ this.close().then(() => {
55
+ if (this.options.keepAlive && this.options.socketUrl && this.options.apiKey) {
56
+ this._initConnection();
57
+ }
58
+ });
59
+ }
60
+ }
61
+ }
62
+ _initConnection() {
63
+ if (this.isConnecting || this.isConnected) return;
64
+ this.attempts++;
65
+ this.isConnecting = true;
66
+ this.socket = io(this.options.socketUrl, {
67
+ path: '/v0/radar/ws',
68
+ auth: {
69
+ 'x-api-key': this.options.apiKey
70
+ },
71
+ reconnectionAttempts: 2,
72
+ transports: ['websocket']
73
+ });
74
+ this.socket.on('ready', () => {
75
+ this.isConnecting = false;
76
+ this.isConnected = true;
77
+ logger.info('SocketService', 'Connected to server');
78
+ this.flushQueue();
79
+ });
80
+ this.socket.on('disconnect', _err => {
81
+ this.isConnecting = false;
82
+ this.isConnected = false;
83
+ logger.info('SocketService', 'Disconnected from server');
84
+ });
85
+ this.socket.on('connect_error', err => {
86
+ this.isConnecting = false;
87
+ this.isConnected = false;
88
+ this.checkReconnectionAttempts();
89
+ logger.error('SocketService', 'Error connecting to server', err);
90
+ });
91
+ this.socket.on(SESSION_STOPPED_EVENT, data => {
92
+ this.emit(SESSION_STOPPED_EVENT, [data]);
93
+ });
94
+ this.socket.on(SESSION_AUTO_CREATED, data => {
95
+ this.emit(SESSION_AUTO_CREATED, [data]);
96
+ });
97
+ this.socket.on(REMOTE_SESSION_RECORDING_START, data => {
98
+ this.emit(REMOTE_SESSION_RECORDING_START, [data]);
99
+ });
100
+ this.socket.on(REMOTE_SESSION_RECORDING_STOP, data => {
101
+ this.emit(REMOTE_SESSION_RECORDING_STOP, [data]);
102
+ });
103
+ }
104
+ checkReconnectionAttempts() {
105
+ if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
106
+ this.flushQueue();
107
+ }
108
+ }
109
+ emitSocketEvent(name, data) {
110
+ if (this.socket?.connected) {
111
+ this.socket.emit(name, data);
112
+ } else {
113
+ this.queue.push({
114
+ data,
115
+ name
116
+ });
117
+ this._initConnection();
118
+ }
119
+ }
120
+ flushQueue() {
121
+ while (this.queue.length > 0 && this.socket?.connected) {
122
+ const event = this.queue.shift();
123
+ if (!event) continue;
124
+ if (this.socket?.connected) {
125
+ this.socket.emit(event.name, event.data);
126
+ }
127
+ }
128
+ }
129
+ send(event) {
130
+ this.emitSocketEvent(SESSION_ADD_EVENT, event);
131
+ }
132
+ subscribeToSession(session) {
133
+ this.sessionId = session.shortId || session._id;
134
+ const payload = {
135
+ projectId: session.project,
136
+ workspaceId: session.workspace,
137
+ debugSessionId: this.sessionId,
138
+ sessionType: session.creationType
139
+ };
140
+ this.emitSocketEvent(SESSION_SUBSCRIBE_EVENT, payload);
141
+ this.emitSocketEvent(SESSION_STARTED_EVENT, {
142
+ debugSessionId: this.sessionId
143
+ });
144
+ }
145
+ unsubscribeFromSession(stopSession) {
146
+ if (this.sessionId) {
147
+ this.emitSocketEvent(SESSION_UNSUBSCRIBE_EVENT, {
148
+ debugSessionId: this.sessionId
149
+ });
150
+ if (stopSession) {
151
+ this.emitSocketEvent(SESSION_STOPPED_EVENT, {});
152
+ }
153
+ }
154
+ }
155
+ setUser(userAttributes) {
156
+ this.emitSocketEvent(SOCKET_SET_USER_EVENT, userAttributes);
157
+ }
158
+ close() {
159
+ return new Promise(resolve => {
160
+ if (this.socket?.connected) {
161
+ setTimeout(() => {
162
+ this.unsubscribeFromSession();
163
+ this.attempts = 0;
164
+ this.isConnected = false;
165
+ this.isConnecting = false;
166
+ this.socket?.disconnect();
167
+ this.socket = null;
168
+ resolve();
169
+ }, 500);
170
+ } else {
171
+ resolve();
172
+ }
173
+ });
174
+ }
175
+ }
176
+ //# sourceMappingURL=socket.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["io","Observable","logger","SESSION_ADD_EVENT","SESSION_AUTO_CREATED","SESSION_STOPPED_EVENT","SESSION_SUBSCRIBE_EVENT","SESSION_UNSUBSCRIBE_EVENT","SOCKET_SET_USER_EVENT","REMOTE_SESSION_RECORDING_START","REMOTE_SESSION_RECORDING_STOP","SESSION_STARTED_EVENT","MAX_RECONNECTION_ATTEMPTS","SocketService","socket","queue","isConnecting","isConnected","attempts","sessionId","constructor","options","apiKey","socketUrl","keepAlive","init","config","_initConnection","updateConfigs","hasChanges","Object","keys","some","key","typedKey","undefined","connected","close","then","path","auth","reconnectionAttempts","transports","on","info","flushQueue","_err","err","checkReconnectionAttempts","error","data","emit","emitSocketEvent","name","push","length","event","shift","send","subscribeToSession","session","shortId","_id","payload","projectId","project","workspaceId","workspace","debugSessionId","sessionType","creationType","unsubscribeFromSession","stopSession","setUser","userAttributes","Promise","resolve","setTimeout","disconnect"],"sourceRoot":"../../../src","sources":["services/socket.service.ts"],"mappings":";;AAAA,OAAOA,EAAE,MAAkB,kBAAkB;AAC7C,SAASC,UAAU,QAAQ,iBAAiB;AAG5C,SAASC,MAAM,QAAQ,mBAAU;AAEjC,SACEC,iBAAiB,EACjBC,oBAAoB,EACpBC,qBAAqB,EACrBC,uBAAuB,EACvBC,yBAAyB,EACzBC,qBAAqB,EACrBC,8BAA8B,EAC9BC,6BAA6B,EAC7BC,qBAAqB,QAChB,oBAAW;AAElB,MAAMC,yBAAyB,GAAG,CAAC;AAcnC,OAAO,MAAMC,aAAa,SAASZ,UAAU,CAAsB;EACzDa,MAAM,GAAkB,IAAI;EAC5BC,KAAK,GAAU,EAAE;EACjBC,YAAY,GAAY,KAAK;EAC7BC,WAAW,GAAY,KAAK;EAC5BC,QAAQ,GAAW,CAAC;EACpBC,SAAS,GAAkB,IAAI;EAGvCC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,OAAO,GAAG;MACbC,MAAM,EAAE,EAAE;MACVC,SAAS,EAAE,EAAE;MACbC,SAAS,EAAE;IACb,CAAC;EACH;;EAEA;AACF;AACA;AACA;EACSC,IAAIA,CAACC,MAA4B,EAAQ;IAC9C,IAAI,CAACL,OAAO,GAAG;MACb,GAAG,IAAI,CAACA,OAAO;MACf,GAAGK;IACL,CAAC;IACD,IACE,IAAI,CAACL,OAAO,CAACG,SAAS,IACtB,IAAI,CAACH,OAAO,CAACE,SAAS,IACtB,IAAI,CAACF,OAAO,CAACC,MAAM,EACnB;MACA,IAAI,CAACK,eAAe,CAAC,CAAC;IACxB;EACF;;EAEA;AACF;AACA;AACA;EACSC,aAAaA,CAACF,MAAqC,EAAQ;IAChE;IACA,MAAMG,UAAU,GAAGC,MAAM,CAACC,IAAI,CAACL,MAAM,CAAC,CAACM,IAAI,CACxCC,GAAG,IAAK;MACP,MAAMC,QAAQ,GAAGD,GAAiC;MAClD,OACEP,MAAM,CAACQ,QAAQ,CAAC,KAAKC,SAAS,IAC9BT,MAAM,CAACQ,QAAQ,CAAC,KAAK,IAAI,CAACb,OAAO,CAACa,QAAQ,CAAC;IAE/C,CACF,CAAC;IAED,IAAIL,UAAU,EAAE;MACd,IAAI,CAACR,OAAO,GAAG;QAAE,GAAG,IAAI,CAACA,OAAO;QAAE,GAAGK;MAAO,CAAC;MAC7C,IAAI,IAAI,CAACZ,MAAM,EAAEsB,SAAS,EAAE;QAC1B,IAAI,CAACC,KAAK,CAAC,CAAC,CAACC,IAAI,CAAC,MAAM;UACtB,IACE,IAAI,CAACjB,OAAO,CAACG,SAAS,IACtB,IAAI,CAACH,OAAO,CAACE,SAAS,IACtB,IAAI,CAACF,OAAO,CAACC,MAAM,EACnB;YACA,IAAI,CAACK,eAAe,CAAC,CAAC;UACxB;QACF,CAAC,CAAC;MACJ;IACF;EACF;EAEQA,eAAeA,CAAA,EAAS;IAC9B,IAAI,IAAI,CAACX,YAAY,IAAI,IAAI,CAACC,WAAW,EAAE;IAC3C,IAAI,CAACC,QAAQ,EAAE;IACf,IAAI,CAACF,YAAY,GAAG,IAAI;IACxB,IAAI,CAACF,MAAM,GAAGd,EAAE,CAAC,IAAI,CAACqB,OAAO,CAACE,SAAS,EAAE;MACvCgB,IAAI,EAAE,cAAc;MACpBC,IAAI,EAAE;QACJ,WAAW,EAAE,IAAI,CAACnB,OAAO,CAACC;MAC5B,CAAC;MACDmB,oBAAoB,EAAE,CAAC;MACvBC,UAAU,EAAE,CAAC,WAAW;IAC1B,CAAC,CAAC;IAEF,IAAI,CAAC5B,MAAM,CAAC6B,EAAE,CAAC,OAAO,EAAE,MAAM;MAC5B,IAAI,CAAC3B,YAAY,GAAG,KAAK;MACzB,IAAI,CAACC,WAAW,GAAG,IAAI;MACvBf,MAAM,CAAC0C,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAC;MACnD,IAAI,CAACC,UAAU,CAAC,CAAC;IACnB,CAAC,CAAC;IAEF,IAAI,CAAC/B,MAAM,CAAC6B,EAAE,CAAC,YAAY,EAAGG,IAAS,IAAK;MAC1C,IAAI,CAAC9B,YAAY,GAAG,KAAK;MACzB,IAAI,CAACC,WAAW,GAAG,KAAK;MACxBf,MAAM,CAAC0C,IAAI,CAAC,eAAe,EAAE,0BAA0B,CAAC;IAC1D,CAAC,CAAC;IAEF,IAAI,CAAC9B,MAAM,CAAC6B,EAAE,CAAC,eAAe,EAAGI,GAAQ,IAAK;MAC5C,IAAI,CAAC/B,YAAY,GAAG,KAAK;MACzB,IAAI,CAACC,WAAW,GAAG,KAAK;MACxB,IAAI,CAAC+B,yBAAyB,CAAC,CAAC;MAChC9C,MAAM,CAAC+C,KAAK,CAAC,eAAe,EAAE,4BAA4B,EAAEF,GAAG,CAAC;IAClE,CAAC,CAAC;IAEF,IAAI,CAACjC,MAAM,CAAC6B,EAAE,CAACtC,qBAAqB,EAAG6C,IAAS,IAAK;MACnD,IAAI,CAACC,IAAI,CAAC9C,qBAAqB,EAAE,CAAC6C,IAAI,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI,CAACpC,MAAM,CAAC6B,EAAE,CAACvC,oBAAoB,EAAG8C,IAAS,IAAK;MAClD,IAAI,CAACC,IAAI,CAAC/C,oBAAoB,EAAE,CAAC8C,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,IAAI,CAACpC,MAAM,CAAC6B,EAAE,CAAClC,8BAA8B,EAAGyC,IAAS,IAAK;MAC5D,IAAI,CAACC,IAAI,CAAC1C,8BAA8B,EAAE,CAACyC,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,IAAI,CAACpC,MAAM,CAAC6B,EAAE,CAACjC,6BAA6B,EAAGwC,IAAS,IAAK;MAC3D,IAAI,CAACC,IAAI,CAACzC,6BAA6B,EAAE,CAACwC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC;EACJ;EAEQF,yBAAyBA,CAAA,EAAS;IACxC,IAAI,IAAI,CAAC9B,QAAQ,IAAIN,yBAAyB,EAAE;MAC9C,IAAI,CAACiC,UAAU,CAAC,CAAC;IACnB;EACF;EAEQO,eAAeA,CAACC,IAAY,EAAEH,IAAS,EAAQ;IACrD,IAAI,IAAI,CAACpC,MAAM,EAAEsB,SAAS,EAAE;MAC1B,IAAI,CAACtB,MAAM,CAACqC,IAAI,CAACE,IAAI,EAAEH,IAAI,CAAC;IAC9B,CAAC,MAAM;MACL,IAAI,CAACnC,KAAK,CAACuC,IAAI,CAAC;QAAEJ,IAAI;QAAEG;MAAK,CAAC,CAAC;MAC/B,IAAI,CAAC1B,eAAe,CAAC,CAAC;IACxB;EACF;EAEQkB,UAAUA,CAAA,EAAS;IACzB,OAAO,IAAI,CAAC9B,KAAK,CAACwC,MAAM,GAAG,CAAC,IAAI,IAAI,CAACzC,MAAM,EAAEsB,SAAS,EAAE;MACtD,MAAMoB,KAAK,GAAG,IAAI,CAACzC,KAAK,CAAC0C,KAAK,CAAC,CAAC;MAChC,IAAI,CAACD,KAAK,EAAE;MAEZ,IAAI,IAAI,CAAC1C,MAAM,EAAEsB,SAAS,EAAE;QAC1B,IAAI,CAACtB,MAAM,CAACqC,IAAI,CAACK,KAAK,CAACH,IAAI,EAAEG,KAAK,CAACN,IAAI,CAAC;MAC1C;IACF;EACF;EAGOQ,IAAIA,CAACF,KAAU,EAAQ;IAC5B,IAAI,CAACJ,eAAe,CAACjD,iBAAiB,EAAEqD,KAAK,CAAC;EAChD;EAGOG,kBAAkBA,CAACC,OAAiB,EAAQ;IACjD,IAAI,CAACzC,SAAS,GAAGyC,OAAO,CAACC,OAAO,IAAID,OAAO,CAACE,GAAG;IAC/C,MAAMC,OAAO,GAAG;MACdC,SAAS,EAAEJ,OAAO,CAACK,OAAO;MAC1BC,WAAW,EAAEN,OAAO,CAACO,SAAS;MAC9BC,cAAc,EAAE,IAAI,CAACjD,SAAS;MAC9BkD,WAAW,EAAET,OAAO,CAACU;IACvB,CAAC;IACD,IAAI,CAAClB,eAAe,CAAC9C,uBAAuB,EAAEyD,OAAO,CAAC;IACtD,IAAI,CAACX,eAAe,CAACzC,qBAAqB,EAAE;MAAEyD,cAAc,EAAE,IAAI,CAACjD;IAAU,CAAC,CAAC;EACjF;EAEOoD,sBAAsBA,CAACC,WAAqB,EAAE;IACnD,IAAI,IAAI,CAACrD,SAAS,EAAE;MAClB,IAAI,CAACiC,eAAe,CAAC7C,yBAAyB,EAAE;QAAE6D,cAAc,EAAE,IAAI,CAACjD;MAAU,CAAC,CAAC;MACnF,IAAIqD,WAAW,EAAE;QACf,IAAI,CAACpB,eAAe,CAAC/C,qBAAqB,EAAE,CAAC,CAAC,CAAC;MACjD;IACF;EACF;EAEOoE,OAAOA,CAACC,cAA2C,EAAQ;IAChE,IAAI,CAACtB,eAAe,CAAC5C,qBAAqB,EAAEkE,cAAc,CAAC;EAC7D;EAEOrC,KAAKA,CAAA,EAAkB;IAC5B,OAAO,IAAIsC,OAAO,CAAEC,OAAO,IAAK;MAC9B,IAAI,IAAI,CAAC9D,MAAM,EAAEsB,SAAS,EAAE;QAC1ByC,UAAU,CAAC,MAAM;UACf,IAAI,CAACN,sBAAsB,CAAC,CAAC;UAC7B,IAAI,CAACrD,QAAQ,GAAG,CAAC;UACjB,IAAI,CAACD,WAAW,GAAG,KAAK;UACxB,IAAI,CAACD,YAAY,GAAG,KAAK;UACzB,IAAI,CAACF,MAAM,EAAEgE,UAAU,CAAC,CAAC;UACzB,IAAI,CAAChE,MAAM,GAAG,IAAI;UAClB8D,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,GAAG,CAAC;MACT,CAAC,MAAM;QACLA,OAAO,CAAC,CAAC;MACX;IACF,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
@@ -6,14 +6,17 @@ import { TracerReactNativeSDK } from "./otel/index.js";
6
6
  import { RecorderReactNativeSDK } from "./recorder/index.js";
7
7
  import { logger } from "./utils/index.js";
8
8
  import { SessionState } from "./types/index.js";
9
+ import { SESSION_STOPPED_EVENT, REMOTE_SESSION_RECORDING_START, REMOTE_SESSION_RECORDING_STOP } from "./config/index.js";
9
10
  import { getFormattedDate, isSessionActive, getNavigatorInfo } from "./utils/index.js";
10
11
  import { setShouldRecordHttpData, setMaxCapturingHttpPayloadSize } from "./patch/index.js";
11
12
  import { BASE_CONFIG, getSessionRecorderConfig } from "./config/index.js";
12
13
  import { StorageService } from "./services/storage.service.js";
13
14
  import { NetworkService } from "./services/network.service.js";
14
15
  import { ApiService } from "./services/api.service.js";
16
+ import { SocketService } from "./services/socket.service.js";
15
17
  class SessionRecorder extends Observable {
16
18
  _apiService = new ApiService();
19
+ _socketService = new SocketService();
17
20
  _tracer = new TracerReactNativeSDK();
18
21
  _recorder = new RecorderReactNativeSDK();
19
22
  _storageService = StorageService.getInstance();
@@ -79,6 +82,7 @@ class SessionRecorder extends Observable {
79
82
  set sessionAttributes(attributes) {
80
83
  this._sessionAttributes = attributes;
81
84
  }
85
+ _userAttributes = undefined;
82
86
 
83
87
  /**
84
88
  * Error message getter and setter
@@ -162,16 +166,44 @@ class SessionRecorder extends Observable {
162
166
  setMaxCapturingHttpPayloadSize(this._configs.maxCapturingHttpPayloadSize);
163
167
  setShouldRecordHttpData(this._configs.captureBody, this._configs.captureHeaders);
164
168
  this._tracer.init(this._configs);
165
- this._recorder.init(this._configs);
166
169
  this._apiService.init(this._configs);
170
+ this._socketService.init({
171
+ apiKey: this._configs.apiKey,
172
+ socketUrl: this._configs.apiBaseUrl,
173
+ keepAlive: this._configs.useWebsocket
174
+ });
175
+ this._recorder.init(this._configs, this._socketService);
167
176
  await this._networkService.init();
168
177
  this._setupNetworkCallbacks();
178
+ this._registerSocketServiceListeners();
169
179
  if (this.sessionId && (this.sessionState === SessionState.started || this.sessionState === SessionState.paused)) {
170
180
  this._start();
171
181
  }
172
182
  this.emit('init', []);
173
183
  }
174
184
 
185
+ /**
186
+ * Register socket service event listeners
187
+ */
188
+ _registerSocketServiceListeners() {
189
+ this._socketService.on(SESSION_STOPPED_EVENT, () => {
190
+ this._stop();
191
+ this._clearSession();
192
+ });
193
+ this._socketService.on(REMOTE_SESSION_RECORDING_START, payload => {
194
+ logger.info('SessionRecorder', 'Remote session recording started', payload);
195
+ if (this.sessionState === SessionState.stopped) {
196
+ this.start();
197
+ }
198
+ });
199
+ this._socketService.on(REMOTE_SESSION_RECORDING_STOP, payload => {
200
+ logger.info('SessionRecorder', 'Remote session recording stopped', payload);
201
+ if (this.sessionState !== SessionState.stopped) {
202
+ this.stop();
203
+ }
204
+ });
205
+ }
206
+
175
207
  /**
176
208
  * Setup network state change callbacks
177
209
  */
@@ -296,11 +328,9 @@ class SessionRecorder extends Observable {
296
328
  const res = await this._apiService.saveContinuousDebugSession(this.sessionId, {
297
329
  sessionAttributes: this.sessionAttributes,
298
330
  resourceAttributes: getNavigatorInfo(),
331
+ userAttributes: this._userAttributes,
299
332
  stoppedAt: Date.now(),
300
- name: this.sessionAttributes.userName ? `${this.sessionAttributes.userName}'s session on ${getFormattedDate(Date.now(), {
301
- month: 'short',
302
- day: 'numeric'
303
- })}` : `Session on ${getFormattedDate(Date.now())}`
333
+ name: this._getSessionName()
304
334
  });
305
335
  return res;
306
336
  } catch (error) {
@@ -316,6 +346,15 @@ class SessionRecorder extends Observable {
316
346
  this._sessionAttributes = attributes;
317
347
  }
318
348
 
349
+ /**
350
+ * Set the user attributes
351
+ * @param userAttributes - the user attributes to set
352
+ */
353
+ setUserAttributes(userAttributes) {
354
+ this._userAttributes = userAttributes;
355
+ this._socketService.setUser(this._userAttributes);
356
+ }
357
+
319
358
  /**
320
359
  * @description Check if session should be started/stopped automatically
321
360
  * @param {ISession} [sessionPayload]
@@ -334,7 +373,8 @@ class SessionRecorder extends Observable {
334
373
  resourceAttributes: {
335
374
  ...getNavigatorInfo(),
336
375
  ...(sessionPayload?.resourceAttributes || {})
337
- }
376
+ },
377
+ userAttributes: this._userAttributes
338
378
  };
339
379
  const {
340
380
  state
@@ -359,10 +399,8 @@ class SessionRecorder extends Observable {
359
399
  const payload = {
360
400
  sessionAttributes: this.sessionAttributes,
361
401
  resourceAttributes: getNavigatorInfo(),
362
- name: this.sessionAttributes.userName ? `${this.sessionAttributes.userName}'s session on ${getFormattedDate(Date.now(), {
363
- month: 'short',
364
- day: 'numeric'
365
- })}` : `Session on ${getFormattedDate(Date.now())}`
402
+ userAttributes: this._userAttributes,
403
+ name: this._getSessionName()
366
404
  };
367
405
  const request = !this.continuousRecording ? payload : {
368
406
  debugSessionData: payload
@@ -390,6 +428,9 @@ class SessionRecorder extends Observable {
390
428
  if (this.sessionId) {
391
429
  this._tracer.start(this.sessionId, this.sessionType);
392
430
  this._recorder.start(this.sessionId, this.sessionType);
431
+ if (this.session) {
432
+ this._socketService.subscribeToSession(this.session);
433
+ }
393
434
  }
394
435
  }
395
436
 
@@ -398,6 +439,7 @@ class SessionRecorder extends Observable {
398
439
  */
399
440
  _stop() {
400
441
  this.sessionState = SessionState.stopped;
442
+ this._socketService.unsubscribeFromSession(true);
401
443
  this._tracer.shutdown();
402
444
  this._recorder.stop();
403
445
  }
@@ -425,8 +467,10 @@ class SessionRecorder extends Observable {
425
467
  if (configureExporters && session.tempApiKey) {
426
468
  this._configs.apiKey = session.tempApiKey;
427
469
  this._tracer.setApiKey(session.tempApiKey);
428
- this._recorder.setApiKey(session.tempApiKey);
429
470
  this._apiService.setApiKey(session.tempApiKey);
471
+ this._socketService.updateConfigs({
472
+ apiKey: session.tempApiKey
473
+ });
430
474
  }
431
475
  this._setSession(session);
432
476
  this._start();
@@ -581,6 +625,18 @@ class SessionRecorder extends Observable {
581
625
  };
582
626
  }
583
627
  }
628
+
629
+ /**
630
+ * Get the session name
631
+ * @returns the session name
632
+ */
633
+ _getSessionName(date = new Date()) {
634
+ const userName = this.sessionAttributes?.userName || this._userAttributes?.userName || this._userAttributes?.name || '';
635
+ return userName ? `${userName}'s session on ${getFormattedDate(date, {
636
+ month: 'short',
637
+ day: 'numeric'
638
+ })}` : `Session on ${getFormattedDate(date)}`;
639
+ }
584
640
  }
585
641
  export default new SessionRecorder();
586
642
  //# sourceMappingURL=session-recorder.js.map