@multiplayer-app/session-recorder-browser 1.2.36 → 1.3.0

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 (56) hide show
  1. package/README.md +44 -14
  2. package/dist/browser/index.js +340 -240
  3. package/dist/browser/index.js.map +1 -1
  4. package/dist/config/constants.d.ts +3 -0
  5. package/dist/config/constants.d.ts.map +1 -1
  6. package/dist/config/constants.js +3 -0
  7. package/dist/config/constants.js.map +1 -1
  8. package/dist/config/defaults.d.ts.map +1 -1
  9. package/dist/config/defaults.js +1 -0
  10. package/dist/config/defaults.js.map +1 -1
  11. package/dist/config/session-recorder.d.ts.map +1 -1
  12. package/dist/config/session-recorder.js +2 -0
  13. package/dist/config/session-recorder.js.map +1 -1
  14. package/dist/exporters/index.js +182 -114
  15. package/dist/exporters/index.js.map +1 -1
  16. package/dist/exporters.d.ts +1 -1
  17. package/dist/exporters.d.ts.map +1 -1
  18. package/dist/exporters.js +1 -1
  19. package/dist/exporters.js.map +1 -1
  20. package/dist/index.js +338 -239
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.umd.js +338 -239
  23. package/dist/index.umd.js.map +1 -1
  24. package/dist/otel/helpers.d.ts.map +1 -1
  25. package/dist/otel/helpers.js +1 -8
  26. package/dist/otel/helpers.js.map +1 -1
  27. package/dist/otel/index.d.ts.map +1 -1
  28. package/dist/otel/index.js +4 -0
  29. package/dist/otel/index.js.map +1 -1
  30. package/dist/patch/fetch.js +1 -0
  31. package/dist/patch/fetch.js.map +1 -1
  32. package/dist/rrweb/index.d.ts +2 -3
  33. package/dist/rrweb/index.d.ts.map +1 -1
  34. package/dist/rrweb/index.js +7 -11
  35. package/dist/rrweb/index.js.map +1 -1
  36. package/dist/services/api.service.d.ts +8 -2
  37. package/dist/services/api.service.d.ts.map +1 -1
  38. package/dist/services/api.service.js.map +1 -1
  39. package/dist/{rrweb/exporter.d.ts → services/socket.service.d.ts} +12 -3
  40. package/dist/services/socket.service.d.ts.map +1 -0
  41. package/dist/{rrweb/exporter.js → services/socket.service.js} +41 -5
  42. package/dist/services/socket.service.js.map +1 -0
  43. package/dist/sessionRecorder.d.ts +6 -2
  44. package/dist/sessionRecorder.d.ts.map +1 -1
  45. package/dist/sessionRecorder.js +33 -3
  46. package/dist/sessionRecorder.js.map +1 -1
  47. package/dist/types/index.d.ts +1 -0
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/index.js +1 -0
  50. package/dist/types/index.js.map +1 -1
  51. package/dist/types/sessionRecorder.d.ts +5 -0
  52. package/dist/types/sessionRecorder.d.ts.map +1 -1
  53. package/dist/types/sessionRecorder.js.map +1 -1
  54. package/package.json +3 -3
  55. package/dist/rrweb/exporter.d.ts.map +0 -1
  56. package/dist/rrweb/exporter.js.map +0 -1
@@ -25065,6 +25065,8 @@ __webpack_require__.r(__webpack_exports__);
25065
25065
  /* harmony export */ OTEL_IGNORE_URLS: () => (/* binding */ OTEL_IGNORE_URLS),
25066
25066
  /* harmony export */ OTEL_MP_SAMPLE_TRACE_RATIO: () => (/* binding */ OTEL_MP_SAMPLE_TRACE_RATIO),
25067
25067
  /* harmony export */ PACKAGE_VERSION_EXPORT: () => (/* binding */ PACKAGE_VERSION_EXPORT),
25068
+ /* harmony export */ REMOTE_SESSION_RECORDING_START: () => (/* binding */ REMOTE_SESSION_RECORDING_START),
25069
+ /* harmony export */ REMOTE_SESSION_RECORDING_STOP: () => (/* binding */ REMOTE_SESSION_RECORDING_STOP),
25068
25070
  /* harmony export */ SESSION_ADD_EVENT: () => (/* binding */ SESSION_ADD_EVENT),
25069
25071
  /* harmony export */ SESSION_AUTO_CREATED: () => (/* binding */ SESSION_AUTO_CREATED),
25070
25072
  /* harmony export */ SESSION_ID_PROP_NAME: () => (/* binding */ SESSION_ID_PROP_NAME),
@@ -25076,7 +25078,8 @@ __webpack_require__.r(__webpack_exports__);
25076
25078
  /* harmony export */ SESSION_STOPPED_EVENT: () => (/* binding */ SESSION_STOPPED_EVENT),
25077
25079
  /* harmony export */ SESSION_SUBSCRIBE_EVENT: () => (/* binding */ SESSION_SUBSCRIBE_EVENT),
25078
25080
  /* harmony export */ SESSION_TYPE_PROP_NAME: () => (/* binding */ SESSION_TYPE_PROP_NAME),
25079
- /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* binding */ SESSION_UNSUBSCRIBE_EVENT)
25081
+ /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* binding */ SESSION_UNSUBSCRIBE_EVENT),
25082
+ /* harmony export */ SOCKET_SET_USER_EVENT: () => (/* binding */ SOCKET_SET_USER_EVENT)
25080
25083
  /* harmony export */ });
25081
25084
  const OTEL_MP_SAMPLE_TRACE_RATIO = 0.15;
25082
25085
  const SESSION_ID_PROP_NAME = 'multiplayer-session-id';
@@ -25090,11 +25093,14 @@ const SESSION_SUBSCRIBE_EVENT = 'debug-session:subscribe';
25090
25093
  const SESSION_UNSUBSCRIBE_EVENT = 'debug-session:unsubscribe';
25091
25094
  const SESSION_AUTO_CREATED = 'debug-session:auto-created';
25092
25095
  const SESSION_ADD_EVENT = 'debug-session:rrweb:add-event';
25096
+ const SOCKET_SET_USER_EVENT = 'socket:set-user';
25093
25097
  const DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE = 100000;
25094
25098
  const SESSION_RESPONSE = 'multiplayer-debug-session-response';
25095
25099
  const CONTINUOUS_DEBUGGING_TIMEOUT = 60000; // 1 minutes
25096
25100
  const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30; // TODO: move to shared config otel core
25097
- const PACKAGE_VERSION_EXPORT = "1.2.36" || 0;
25101
+ const REMOTE_SESSION_RECORDING_START = 'remote-session-recording:start';
25102
+ const REMOTE_SESSION_RECORDING_STOP = 'remote-session-recording:stop';
25103
+ const PACKAGE_VERSION_EXPORT = "1.3.0" || 0;
25098
25104
  // Regex patterns for OpenTelemetry ignore URLs
25099
25105
  const OTEL_IGNORE_URLS = [
25100
25106
  // Traces endpoint
@@ -25190,6 +25196,7 @@ const BASE_CONFIG = {
25190
25196
  captureHeaders: true,
25191
25197
  masking: DEFAULT_MASKING_CONFIG,
25192
25198
  widgetTextOverrides: DEFAULT_WIDGET_TEXT_CONFIG,
25199
+ useWebsocket: true,
25193
25200
  };
25194
25201
 
25195
25202
 
@@ -25213,6 +25220,8 @@ __webpack_require__.r(__webpack_exports__);
25213
25220
  /* harmony export */ OTEL_IGNORE_URLS: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.OTEL_IGNORE_URLS),
25214
25221
  /* harmony export */ OTEL_MP_SAMPLE_TRACE_RATIO: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.OTEL_MP_SAMPLE_TRACE_RATIO),
25215
25222
  /* harmony export */ PACKAGE_VERSION_EXPORT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.PACKAGE_VERSION_EXPORT),
25223
+ /* harmony export */ REMOTE_SESSION_RECORDING_START: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.REMOTE_SESSION_RECORDING_START),
25224
+ /* harmony export */ REMOTE_SESSION_RECORDING_STOP: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.REMOTE_SESSION_RECORDING_STOP),
25216
25225
  /* harmony export */ SESSION_ADD_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_ADD_EVENT),
25217
25226
  /* harmony export */ SESSION_AUTO_CREATED: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_AUTO_CREATED),
25218
25227
  /* harmony export */ SESSION_ID_PROP_NAME: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_ID_PROP_NAME),
@@ -25225,6 +25234,7 @@ __webpack_require__.r(__webpack_exports__);
25225
25234
  /* harmony export */ SESSION_SUBSCRIBE_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_SUBSCRIBE_EVENT),
25226
25235
  /* harmony export */ SESSION_TYPE_PROP_NAME: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_TYPE_PROP_NAME),
25227
25236
  /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_UNSUBSCRIBE_EVENT),
25237
+ /* harmony export */ SOCKET_SET_USER_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SOCKET_SET_USER_EVENT),
25228
25238
  /* harmony export */ getMaskingConfig: () => (/* reexport safe */ _masking__WEBPACK_IMPORTED_MODULE_3__.getMaskingConfig),
25229
25239
  /* harmony export */ getSessionRecorderConfig: () => (/* reexport safe */ _session_recorder__WEBPACK_IMPORTED_MODULE_4__.getSessionRecorderConfig),
25230
25240
  /* harmony export */ isValidArray: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_2__.isValidArray),
@@ -25344,6 +25354,7 @@ const getWidgetTextOverridesConfig = (config, defaultConfig) => {
25344
25354
  };
25345
25355
  };
25346
25356
  const getSessionRecorderConfig = (c) => {
25357
+ var _a;
25347
25358
  if (!c) {
25348
25359
  return _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG;
25349
25360
  }
@@ -25369,6 +25380,7 @@ const getSessionRecorderConfig = (c) => {
25369
25380
  captureHeaders: (0,_validators__WEBPACK_IMPORTED_MODULE_3__.isValidBoolean)(c.captureHeaders, _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG.captureHeaders),
25370
25381
  masking: (0,_masking__WEBPACK_IMPORTED_MODULE_2__.getMaskingConfig)(c.masking),
25371
25382
  widgetTextOverrides: getWidgetTextOverridesConfig(c.widgetTextOverrides, _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG.widgetTextOverrides),
25383
+ useWebsocket: (0,_validators__WEBPACK_IMPORTED_MODULE_3__.isValidBoolean)(c.useWebsocket, (_a = _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG.useWebsocket) !== null && _a !== void 0 ? _a : false),
25372
25384
  };
25373
25385
  };
25374
25386
 
@@ -25958,14 +25970,7 @@ const getExporterEndpoint = (exporterEndpoint) => {
25958
25970
  return `${trimmedExporterEndpoint}/v1/traces`;
25959
25971
  };
25960
25972
  const getElementTextContent = (element) => {
25961
- const getInnerText = (element) => {
25962
- const slicedText = element.innerText.slice(0, 50);
25963
- if (slicedText.length < element.innerText.length) {
25964
- return `${slicedText}...`;
25965
- }
25966
- return slicedText;
25967
- };
25968
- return String(element.textContent || element.ariaLabel || getInnerText(element) || '').trim();
25973
+ return String(element.textContent || element.ariaLabel || '').trim();
25969
25974
  };
25970
25975
 
25971
25976
 
@@ -26190,6 +26195,7 @@ class TracerBrowserSDK {
26190
26195
  });
26191
26196
  return;
26192
26197
  }
26198
+ // eslint-disable-next-line
26193
26199
  }
26194
26200
  catch (_ignored) { }
26195
26201
  // Fallback: create a short-lived span to hold the exception details
@@ -26205,6 +26211,7 @@ class TracerBrowserSDK {
26205
26211
  ...(errorInfo || {}),
26206
26212
  });
26207
26213
  span.end();
26214
+ // eslint-disable-next-line
26208
26215
  }
26209
26216
  catch (_ignored) { }
26210
26217
  }
@@ -26226,12 +26233,14 @@ class TracerBrowserSDK {
26226
26233
  return;
26227
26234
  if (typeof window === 'undefined')
26228
26235
  return;
26236
+ // eslint-disable-next-line
26229
26237
  const errorHandler = (event) => {
26230
26238
  const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error
26231
26239
  ? event.error
26232
26240
  : new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
26233
26241
  this.captureException(err);
26234
26242
  };
26243
+ // eslint-disable-next-line
26235
26244
  const rejectionHandler = (event) => {
26236
26245
  const reason = (event && 'reason' in event) ? event.reason : undefined;
26237
26246
  const err = reason instanceof Error
@@ -26410,6 +26419,7 @@ if (typeof window !== 'undefined' && typeof window.fetch !== 'undefined') {
26410
26419
  : (typeof input === 'string' || input instanceof URL ? String(input) : '');
26411
26420
  // Only attempt to read the body from init (safe); avoid constructing/cloning Requests
26412
26421
  // If the caller passed a Request as input, we do not attempt to read its body here
26422
+ // eslint-disable-next-line
26413
26423
  const candidateBody = init === null || init === void 0 ? void 0 : init.body;
26414
26424
  if (!(0,_utils_type_utils__WEBPACK_IMPORTED_MODULE_0__.isNullish)(candidateBody)) {
26415
26425
  const requestBody = _tryReadFetchBody({
@@ -26604,170 +26614,6 @@ if (typeof XMLHttpRequest !== 'undefined') {
26604
26614
  }
26605
26615
 
26606
26616
 
26607
- /***/ }),
26608
-
26609
- /***/ "./src/rrweb/exporter.ts":
26610
- /*!*******************************!*\
26611
- !*** ./src/rrweb/exporter.ts ***!
26612
- \*******************************/
26613
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26614
-
26615
- "use strict";
26616
- __webpack_require__.r(__webpack_exports__);
26617
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26618
- /* harmony export */ RrwebEventExporter: () => (/* binding */ RrwebEventExporter)
26619
- /* harmony export */ });
26620
- /* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-client */ "../../node_modules/socket.io-client/build/esm/index.js");
26621
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventBus */ "./src/eventBus.ts");
26622
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/messaging.service */ "./src/services/messaging.service.ts");
26623
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
26624
-
26625
-
26626
-
26627
-
26628
- const MAX_RECONNECTION_ATTEMPTS = 2;
26629
- class RrwebEventExporter {
26630
- constructor(options) {
26631
- this.options = options;
26632
- this.socket = null;
26633
- this.queue = [];
26634
- this.isConnecting = false;
26635
- this.isConnected = false;
26636
- this.usePostMessage = false;
26637
- this.attempts = 0;
26638
- this.sessionId = null;
26639
- }
26640
- init() {
26641
- if (this.isConnecting || this.isConnected)
26642
- return;
26643
- this.attempts++;
26644
- this.isConnecting = true;
26645
- this.usePostMessage = false;
26646
- this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options.socketUrl, {
26647
- path: '/v0/radar/ws',
26648
- auth: {
26649
- 'x-api-key': this.options.apiKey,
26650
- },
26651
- reconnectionAttempts: 2,
26652
- transports: ['websocket'],
26653
- });
26654
- // this.socket.on('connect', () => {
26655
- // this.isConnecting = false
26656
- // this.isConnected = true
26657
- // this.usePostMessage = false
26658
- // this.flushQueue()
26659
- // })
26660
- this.socket.on('ready', () => {
26661
- this.isConnecting = false;
26662
- this.isConnected = true;
26663
- this.usePostMessage = false;
26664
- this.flushQueue();
26665
- });
26666
- this.socket.on('disconnect', (err) => {
26667
- this.isConnecting = false;
26668
- this.isConnected = false;
26669
- });
26670
- this.socket.on('connect_error', (err) => {
26671
- this.isConnecting = false;
26672
- this.isConnected = false;
26673
- this.checkReconnectionAttempts();
26674
- });
26675
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, (data) => {
26676
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, data);
26677
- this.unsubscribeFromSession();
26678
- });
26679
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, (data) => {
26680
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, data);
26681
- });
26682
- }
26683
- checkReconnectionAttempts() {
26684
- if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
26685
- this.usePostMessage = !!this.options.usePostMessageFallback;
26686
- this.flushQueue();
26687
- }
26688
- }
26689
- sendViaPostMessage(event) {
26690
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('rrweb-event', event);
26691
- }
26692
- flushQueue() {
26693
- var _a, _b;
26694
- while (this.queue.length > 0 && (this.usePostMessage || ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected))) {
26695
- const event = this.queue.shift();
26696
- if (!event)
26697
- continue;
26698
- if (this.usePostMessage) {
26699
- this.sendViaPostMessage(event.data);
26700
- }
26701
- else if ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.connected) {
26702
- this.socket.emit(event.name, event.data);
26703
- }
26704
- }
26705
- }
26706
- unsubscribeFromSession() {
26707
- var _a;
26708
- const payload = {
26709
- debugSessionId: this.sessionId,
26710
- };
26711
- if (this.usePostMessage) {
26712
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('socket-emit', { event: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, data: payload });
26713
- }
26714
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26715
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, payload);
26716
- }
26717
- }
26718
- send(event) {
26719
- var _a;
26720
- if (this.usePostMessage) {
26721
- this.sendViaPostMessage(event);
26722
- }
26723
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26724
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT, event);
26725
- }
26726
- else {
26727
- this.queue.push({ data: event, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT });
26728
- this.init();
26729
- }
26730
- }
26731
- subscribeToSession(session) {
26732
- var _a;
26733
- this.sessionId = session.shortId || session._id;
26734
- const payload = {
26735
- projectId: session.project,
26736
- workspaceId: session.workspace,
26737
- debugSessionId: this.sessionId,
26738
- sessionType: session.creationType,
26739
- };
26740
- if (this.usePostMessage) {
26741
- this.sendViaPostMessage({ type: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, ...payload });
26742
- }
26743
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26744
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, payload);
26745
- }
26746
- else {
26747
- this.queue.push({ data: payload, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT });
26748
- this.init();
26749
- }
26750
- }
26751
- close() {
26752
- var _a;
26753
- if (this.usePostMessage) {
26754
- this.sendViaPostMessage({ type: 'close' });
26755
- }
26756
- if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26757
- setTimeout(() => {
26758
- var _a;
26759
- this.unsubscribeFromSession();
26760
- this.attempts = 0;
26761
- this.isConnected = false;
26762
- this.isConnecting = false;
26763
- (_a = this.socket) === null || _a === void 0 ? void 0 : _a.disconnect();
26764
- this.socket = null;
26765
- }, 500);
26766
- }
26767
- }
26768
- }
26769
-
26770
-
26771
26617
  /***/ }),
26772
26618
 
26773
26619
  /***/ "./src/rrweb/index.ts":
@@ -26787,7 +26633,7 @@ __webpack_require__.r(__webpack_exports__);
26787
26633
  /* harmony import */ var _rrweb_rrweb_plugin_console_record__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @rrweb/rrweb-plugin-console-record */ "../../node_modules/@rrweb/rrweb-plugin-console-record/dist/rrweb-plugin-console-record.js");
26788
26634
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./src/utils/index.ts");
26789
26635
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
26790
- /* harmony import */ var _exporter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exporter */ "./src/rrweb/exporter.ts");
26636
+ /* harmony import */ var _services_socket_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../services/socket.service */ "./src/services/socket.service.ts");
26791
26637
 
26792
26638
 
26793
26639
 
@@ -26819,11 +26665,6 @@ class RecorderBrowserSDK {
26819
26665
  */
26820
26666
  init(config) {
26821
26667
  this.config = config;
26822
- this.exporter = new _exporter__WEBPACK_IMPORTED_MODULE_5__.RrwebEventExporter({
26823
- apiKey: config.apiKey,
26824
- socketUrl: config.apiBaseUrl || '',
26825
- usePostMessageFallback: Boolean(config.usePostMessageFallback),
26826
- });
26827
26668
  }
26828
26669
  /**
26829
26670
  * Starts recording events for a given session ID.
@@ -26869,7 +26710,7 @@ class RecorderBrowserSDK {
26869
26710
  this.stopFn = (0,rrweb__WEBPACK_IMPORTED_MODULE_6__.record)({
26870
26711
  ...options,
26871
26712
  emit: async (event) => {
26872
- if (this.exporter) {
26713
+ if (_services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService) {
26873
26714
  if (typeof maskingConfig.maskConsoleEvent === 'function' && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isConsoleEvent)(event)) {
26874
26715
  const { data } = event;
26875
26716
  const maskedPayload = maskingConfig.maskConsoleEvent(data.payload);
@@ -26877,7 +26718,7 @@ class RecorderBrowserSDK {
26877
26718
  }
26878
26719
  const packedEvent = (0,_rrweb_packer__WEBPACK_IMPORTED_MODULE_0__.pack)(event);
26879
26720
  this.stoppedAt = new Date(event.timestamp).toISOString();
26880
- this.exporter.send({
26721
+ _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService.send({
26881
26722
  event: packedEvent,
26882
26723
  eventType: event.type,
26883
26724
  timestamp: event.timestamp,
@@ -26918,12 +26759,13 @@ class RecorderBrowserSDK {
26918
26759
  stop() {
26919
26760
  var _a, _b;
26920
26761
  (_a = this.stopFn) === null || _a === void 0 ? void 0 : _a.call(this);
26921
- (_b = this.exporter) === null || _b === void 0 ? void 0 : _b.close();
26762
+ if (!((_b = this.config) === null || _b === void 0 ? void 0 : _b.useWebsocket)) {
26763
+ _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService === null || _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService === void 0 ? void 0 : _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService.close();
26764
+ }
26922
26765
  this.clearRestartInterval();
26923
26766
  }
26924
26767
  subscribeToSession(session) {
26925
- var _a;
26926
- (_a = this.exporter) === null || _a === void 0 ? void 0 : _a.subscribeToSession(session);
26768
+ _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService === null || _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService === void 0 ? void 0 : _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService.subscribeToSession(session);
26927
26769
  }
26928
26770
  }
26929
26771
 
@@ -27184,6 +27026,208 @@ const messagingService = new MessagingService();
27184
27026
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (messagingService);
27185
27027
 
27186
27028
 
27029
+ /***/ }),
27030
+
27031
+ /***/ "./src/services/socket.service.ts":
27032
+ /*!****************************************!*\
27033
+ !*** ./src/services/socket.service.ts ***!
27034
+ \****************************************/
27035
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
27036
+
27037
+ "use strict";
27038
+ __webpack_require__.r(__webpack_exports__);
27039
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
27040
+ /* harmony export */ SocketService: () => (/* binding */ SocketService),
27041
+ /* harmony export */ createSocketService: () => (/* binding */ createSocketService),
27042
+ /* harmony export */ socketService: () => (/* binding */ socketService)
27043
+ /* harmony export */ });
27044
+ /* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-client */ "../../node_modules/socket.io-client/build/esm/index.js");
27045
+ /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventBus */ "./src/eventBus.ts");
27046
+ /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/messaging.service */ "./src/services/messaging.service.ts");
27047
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
27048
+
27049
+
27050
+
27051
+
27052
+ const MAX_RECONNECTION_ATTEMPTS = 2;
27053
+ class SocketService {
27054
+ constructor(options) {
27055
+ this.options = options;
27056
+ this.socket = null;
27057
+ this.queue = [];
27058
+ this.isConnecting = false;
27059
+ this.isConnected = false;
27060
+ this.usePostMessage = false;
27061
+ this.attempts = 0;
27062
+ this.sessionId = null;
27063
+ if (this.options.keepAlive
27064
+ && this.options.socketUrl
27065
+ && this.options.apiKey) {
27066
+ this.init();
27067
+ }
27068
+ }
27069
+ init() {
27070
+ if (this.isConnecting || this.isConnected)
27071
+ return;
27072
+ this.attempts++;
27073
+ this.isConnecting = true;
27074
+ this.usePostMessage = false;
27075
+ this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options.socketUrl, {
27076
+ path: '/v0/radar/ws',
27077
+ auth: {
27078
+ 'x-api-key': this.options.apiKey,
27079
+ },
27080
+ reconnectionAttempts: 2,
27081
+ transports: ['websocket'],
27082
+ });
27083
+ // this.socket.on('connect', () => {
27084
+ // this.isConnecting = false
27085
+ // this.isConnected = true
27086
+ // this.usePostMessage = false
27087
+ // this.flushQueue()
27088
+ // })
27089
+ this.socket.on('ready', () => {
27090
+ this.isConnecting = false;
27091
+ this.isConnected = true;
27092
+ this.usePostMessage = false;
27093
+ this.flushQueue();
27094
+ });
27095
+ this.socket.on('disconnect', (err) => {
27096
+ this.isConnecting = false;
27097
+ this.isConnected = false;
27098
+ });
27099
+ this.socket.on('connect_error', (err) => {
27100
+ this.isConnecting = false;
27101
+ this.isConnected = false;
27102
+ this.checkReconnectionAttempts();
27103
+ });
27104
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, (data) => {
27105
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, data);
27106
+ this.unsubscribeFromSession();
27107
+ });
27108
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, (data) => {
27109
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, data);
27110
+ });
27111
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_START, (data) => {
27112
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_START, data);
27113
+ });
27114
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_STOP, (data) => {
27115
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_STOP, data);
27116
+ });
27117
+ }
27118
+ checkReconnectionAttempts() {
27119
+ if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
27120
+ this.usePostMessage = !!this.options.usePostMessageFallback;
27121
+ this.flushQueue();
27122
+ }
27123
+ }
27124
+ sendViaPostMessage(event) {
27125
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('rrweb-event', event);
27126
+ }
27127
+ flushQueue() {
27128
+ var _a, _b;
27129
+ while (this.queue.length > 0 && (this.usePostMessage || ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected))) {
27130
+ const event = this.queue.shift();
27131
+ if (!event)
27132
+ continue;
27133
+ if (this.usePostMessage) {
27134
+ this.sendViaPostMessage(event.data);
27135
+ }
27136
+ else if ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.connected) {
27137
+ this.socket.emit(event.name, event.data);
27138
+ }
27139
+ }
27140
+ }
27141
+ unsubscribeFromSession() {
27142
+ var _a;
27143
+ const payload = {
27144
+ debugSessionId: this.sessionId,
27145
+ };
27146
+ if (this.usePostMessage) {
27147
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('socket-emit', { event: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, data: payload });
27148
+ }
27149
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
27150
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, payload);
27151
+ }
27152
+ }
27153
+ send(event) {
27154
+ var _a;
27155
+ if (this.usePostMessage) {
27156
+ this.sendViaPostMessage(event);
27157
+ }
27158
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
27159
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT, event);
27160
+ }
27161
+ else {
27162
+ this.queue.push({ data: event, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT });
27163
+ this.init();
27164
+ }
27165
+ }
27166
+ subscribeToSession(session) {
27167
+ var _a;
27168
+ this.sessionId = session.shortId || session._id;
27169
+ const payload = {
27170
+ projectId: session.project,
27171
+ workspaceId: session.workspace,
27172
+ debugSessionId: this.sessionId,
27173
+ sessionType: session.creationType,
27174
+ };
27175
+ if (this.usePostMessage) {
27176
+ this.sendViaPostMessage({
27177
+ type: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT,
27178
+ ...payload,
27179
+ });
27180
+ }
27181
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
27182
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, payload);
27183
+ }
27184
+ else {
27185
+ this.queue.push({
27186
+ data: payload,
27187
+ name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT,
27188
+ });
27189
+ this.init();
27190
+ }
27191
+ }
27192
+ setUser(userAttributes) {
27193
+ var _a;
27194
+ if (this.usePostMessage) {
27195
+ this.sendViaPostMessage({
27196
+ type: _config__WEBPACK_IMPORTED_MODULE_3__.SOCKET_SET_USER_EVENT,
27197
+ data: userAttributes,
27198
+ });
27199
+ }
27200
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
27201
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SOCKET_SET_USER_EVENT, userAttributes);
27202
+ }
27203
+ }
27204
+ close() {
27205
+ var _a;
27206
+ if (this.usePostMessage) {
27207
+ this.sendViaPostMessage({ type: 'close' });
27208
+ }
27209
+ if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
27210
+ setTimeout(() => {
27211
+ var _a;
27212
+ this.unsubscribeFromSession();
27213
+ this.attempts = 0;
27214
+ this.isConnected = false;
27215
+ this.isConnecting = false;
27216
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.disconnect();
27217
+ this.socket = null;
27218
+ }, 500);
27219
+ }
27220
+ }
27221
+ }
27222
+ let socketService = null;
27223
+ const createSocketService = (options) => {
27224
+ if (!socketService) {
27225
+ socketService = new SocketService(options);
27226
+ }
27227
+ return socketService;
27228
+ };
27229
+
27230
+
27187
27231
  /***/ }),
27188
27232
 
27189
27233
  /***/ "./src/sessionRecorder.ts":
@@ -27201,17 +27245,19 @@ __webpack_require__.r(__webpack_exports__);
27201
27245
  /* harmony import */ var _rrweb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rrweb */ "./src/rrweb/index.ts");
27202
27246
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils/index.ts");
27203
27247
  /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./src/types/index.ts");
27204
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ "./src/config/index.ts");
27205
- /* harmony import */ var _patch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./patch */ "./src/patch/index.ts");
27206
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./eventBus */ "./src/eventBus.ts");
27207
- /* harmony import */ var _sessionWidget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./sessionWidget */ "./src/sessionWidget/index.ts");
27208
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./services/messaging.service */ "./src/services/messaging.service.ts");
27209
- /* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./services/api.service */ "./src/services/api.service.ts");
27210
- /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./index.scss */ "./src/index.scss");
27211
- /* harmony import */ var _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @multiplayer-app/session-recorder-common */ "../session-recorder-common/dist/esm/index-browser.js");
27212
- /* harmony import */ var _sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sessionWidget/buttonStateConfigs */ "./src/sessionWidget/buttonStateConfigs.ts");
27213
- /* harmony import */ var lib0_observable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lib0/observable */ "../../node_modules/lib0/observable.js");
27214
- /* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./navigation */ "./src/navigation/index.ts");
27248
+ /* harmony import */ var _services_socket_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./services/socket.service */ "./src/services/socket.service.ts");
27249
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config */ "./src/config/index.ts");
27250
+ /* harmony import */ var _patch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./patch */ "./src/patch/index.ts");
27251
+ /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./eventBus */ "./src/eventBus.ts");
27252
+ /* harmony import */ var _sessionWidget__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./sessionWidget */ "./src/sessionWidget/index.ts");
27253
+ /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./services/messaging.service */ "./src/services/messaging.service.ts");
27254
+ /* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./services/api.service */ "./src/services/api.service.ts");
27255
+ /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./index.scss */ "./src/index.scss");
27256
+ /* harmony import */ var _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @multiplayer-app/session-recorder-common */ "../session-recorder-common/dist/esm/index-browser.js");
27257
+ /* harmony import */ var _sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sessionWidget/buttonStateConfigs */ "./src/sessionWidget/buttonStateConfigs.ts");
27258
+ /* harmony import */ var lib0_observable__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! lib0/observable */ "../../node_modules/lib0/observable.js");
27259
+ /* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./navigation */ "./src/navigation/index.ts");
27260
+
27215
27261
 
27216
27262
 
27217
27263
 
@@ -27227,7 +27273,7 @@ __webpack_require__.r(__webpack_exports__);
27227
27273
 
27228
27274
 
27229
27275
 
27230
- class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Observable {
27276
+ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_15__.Observable {
27231
27277
  get navigation() {
27232
27278
  return this._navigationRecorder.api;
27233
27279
  }
@@ -27239,20 +27285,20 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27239
27285
  }
27240
27286
  set sessionId(sessionId) {
27241
27287
  this._sessionId = sessionId;
27242
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_ID_PROP_NAME, sessionId);
27288
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_ID_PROP_NAME, sessionId);
27243
27289
  }
27244
27290
  get sessionType() {
27245
27291
  return this._sessionType;
27246
27292
  }
27247
27293
  set sessionType(sessionType) {
27248
27294
  this._sessionType = sessionType;
27249
- const continuousRecording = sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS;
27295
+ const continuousRecording = sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS;
27250
27296
  this._sessionWidget.updateContinuousRecordingState(continuousRecording);
27251
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('continuous-debugging', continuousRecording);
27252
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_TYPE_PROP_NAME, sessionType);
27297
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('continuous-debugging', continuousRecording);
27298
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_TYPE_PROP_NAME, sessionType);
27253
27299
  }
27254
27300
  get continuousRecording() {
27255
- return this.sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS;
27301
+ return this.sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS;
27256
27302
  }
27257
27303
  get sessionState() {
27258
27304
  return this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
@@ -27260,8 +27306,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27260
27306
  set sessionState(state) {
27261
27307
  this._sessionState = state;
27262
27308
  this._sessionWidget.updateState(this._sessionState, this.continuousRecording);
27263
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('state-change', this._sessionState);
27264
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STATE_PROP_NAME, state);
27309
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this._sessionState);
27310
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STATE_PROP_NAME, state);
27265
27311
  // Emit observable event to support React wrapper
27266
27312
  this.emit('state-change', [this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped, this.sessionType]);
27267
27313
  }
@@ -27270,7 +27316,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27270
27316
  }
27271
27317
  set session(session) {
27272
27318
  this._session = session;
27273
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_PROP_NAME, this._session);
27319
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_PROP_NAME, this._session);
27274
27320
  }
27275
27321
  get sessionAttributes() {
27276
27322
  return this._sessionAttributes || {};
@@ -27302,16 +27348,17 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27302
27348
  constructor() {
27303
27349
  var _a;
27304
27350
  super();
27305
- this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_9__.ApiService();
27351
+ this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_10__.ApiService();
27306
27352
  this._tracer = new _otel__WEBPACK_IMPORTED_MODULE_0__.TracerBrowserSDK();
27307
27353
  this._recorder = new _rrweb__WEBPACK_IMPORTED_MODULE_1__.RecorderBrowserSDK();
27308
- this._sessionWidget = new _sessionWidget__WEBPACK_IMPORTED_MODULE_7__.SessionWidget();
27309
- this._navigationRecorder = new _navigation__WEBPACK_IMPORTED_MODULE_13__.NavigationRecorder();
27354
+ this._sessionWidget = new _sessionWidget__WEBPACK_IMPORTED_MODULE_8__.SessionWidget();
27355
+ this._navigationRecorder = new _navigation__WEBPACK_IMPORTED_MODULE_14__.NavigationRecorder();
27356
+ this._userAttributes = undefined;
27310
27357
  this._startRequestController = null;
27311
27358
  this._isInitialized = false;
27312
27359
  // Session ID and state are stored in localStorage
27313
27360
  this._sessionId = null;
27314
- this._sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
27361
+ this._sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
27315
27362
  this._sessionState = null;
27316
27363
  this._session = null;
27317
27364
  this._sessionAttributes = null;
@@ -27321,10 +27368,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27321
27368
  this._error = '';
27322
27369
  // Safety: avoid accessing storage in SSR/non-browser environments
27323
27370
  const isBrowser = typeof window !== 'undefined';
27324
- const sessionLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_PROP_NAME, true) : null;
27325
- const sessionIdLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_ID_PROP_NAME) : null;
27326
- const sessionStateLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STATE_PROP_NAME) : null;
27327
- const sessionTypeLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_TYPE_PROP_NAME) : null;
27371
+ const sessionLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_PROP_NAME, true) : null;
27372
+ const sessionIdLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_ID_PROP_NAME) : null;
27373
+ const sessionStateLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STATE_PROP_NAME) : null;
27374
+ const sessionTypeLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_TYPE_PROP_NAME) : null;
27328
27375
  if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isSessionActive)(sessionLocal, sessionTypeLocal)) {
27329
27376
  this.session = sessionLocal;
27330
27377
  this.sessionId = sessionIdLocal;
@@ -27335,10 +27382,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27335
27382
  this.session = null;
27336
27383
  this.sessionId = null;
27337
27384
  this.sessionState = null;
27338
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
27385
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
27339
27386
  }
27340
27387
  this._configs = {
27341
- ..._config__WEBPACK_IMPORTED_MODULE_4__.BASE_CONFIG,
27388
+ ..._config__WEBPACK_IMPORTED_MODULE_5__.BASE_CONFIG,
27342
27389
  apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || '',
27343
27390
  };
27344
27391
  }
@@ -27350,11 +27397,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27350
27397
  if (typeof window === 'undefined') {
27351
27398
  return;
27352
27399
  }
27353
- this._configs = (0,_config__WEBPACK_IMPORTED_MODULE_4__.getSessionRecorderConfig)({ ...this._configs, ...configs });
27400
+ this._configs = (0,_config__WEBPACK_IMPORTED_MODULE_5__.getSessionRecorderConfig)({ ...this._configs, ...configs });
27354
27401
  this._isInitialized = true;
27355
27402
  this._checkOperation('init');
27356
- (0,_patch__WEBPACK_IMPORTED_MODULE_5__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
27357
- (0,_patch__WEBPACK_IMPORTED_MODULE_5__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
27403
+ (0,_patch__WEBPACK_IMPORTED_MODULE_6__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
27404
+ (0,_patch__WEBPACK_IMPORTED_MODULE_6__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
27358
27405
  this._tracer.init(this._configs);
27359
27406
  this._apiService.init(this._configs);
27360
27407
  this._sessionWidget.init(this._configs);
@@ -27364,16 +27411,26 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27364
27411
  environment: this._configs.environment,
27365
27412
  version: this._configs.version,
27366
27413
  });
27414
+ (0,_services_socket_service__WEBPACK_IMPORTED_MODULE_4__.createSocketService)({
27415
+ apiKey: this._configs.apiKey,
27416
+ socketUrl: this._configs.apiBaseUrl || '',
27417
+ usePostMessageFallback: Boolean(this._configs.usePostMessageFallback),
27418
+ keepAlive: Boolean(this._configs.useWebsocket),
27419
+ });
27367
27420
  if (this._configs.apiKey) {
27368
27421
  this._recorder.init(this._configs);
27369
27422
  }
27370
- if (this.sessionId && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.paused)) {
27423
+ if (this.sessionId
27424
+ && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started
27425
+ || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.paused)) {
27371
27426
  this._start();
27372
27427
  }
27373
27428
  this._registerWidgetEvents();
27374
27429
  this._registerSessionLimitReach();
27375
27430
  this._registerSessionAutoCreation();
27376
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('state-change', this.sessionState);
27431
+ this._registerRemoteSessionRecordingStart();
27432
+ this._registerRemoteSessionRecordingStop();
27433
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
27377
27434
  // Emit init observable event
27378
27435
  this.emit('init', [this]);
27379
27436
  }
@@ -27386,7 +27443,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27386
27443
  if (!this.continuousRecording || !this._configs.showContinuousRecording) {
27387
27444
  return;
27388
27445
  }
27389
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVING);
27446
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVING);
27390
27447
  const res = await this._apiService.saveContinuousDebugSession(this.sessionId, {
27391
27448
  sessionAttributes: this.sessionAttributes,
27392
27449
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
@@ -27395,7 +27452,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27395
27452
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
27396
27453
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
27397
27454
  });
27398
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVED);
27455
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVED);
27399
27456
  const sessionUrl = res === null || res === void 0 ? void 0 : res.url;
27400
27457
  this._sessionWidget.showToast({
27401
27458
  type: 'success',
@@ -27408,11 +27465,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27408
27465
  }
27409
27466
  catch (error) {
27410
27467
  this.error = error.message;
27411
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.ERROR);
27468
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.ERROR);
27412
27469
  }
27413
27470
  finally {
27414
27471
  setTimeout(() => {
27415
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.IDLE);
27472
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.IDLE);
27416
27473
  }, 3000);
27417
27474
  }
27418
27475
  }
@@ -27421,11 +27478,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27421
27478
  * @param type - the type of session to start
27422
27479
  * @param session - the session to start
27423
27480
  */
27424
- start(type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL, session) {
27481
+ start(type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL, session) {
27425
27482
  this._checkOperation('start');
27426
27483
  // If continuous recording is disabled, force plain mode
27427
- if (type === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS && !this._configs.showContinuousRecording) {
27428
- type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
27484
+ if (type === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS && !this._configs.showContinuousRecording) {
27485
+ type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
27429
27486
  }
27430
27487
  this.sessionType = type;
27431
27488
  this._startRequestController = new AbortController();
@@ -27446,7 +27503,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27446
27503
  this._stop();
27447
27504
  if (this.continuousRecording) {
27448
27505
  await this._apiService.stopContinuousDebugSession(this.sessionId);
27449
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
27506
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
27450
27507
  }
27451
27508
  else {
27452
27509
  const request = {
@@ -27454,7 +27511,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27454
27511
  stoppedAt: this._recorder.stoppedAt,
27455
27512
  };
27456
27513
  const response = await this._apiService.stopSession(this.sessionId, request);
27457
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_RESPONSE, response);
27514
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_RESPONSE, response);
27458
27515
  }
27459
27516
  this._clearSession();
27460
27517
  }
@@ -27495,7 +27552,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27495
27552
  this._stop();
27496
27553
  if (this.continuousRecording) {
27497
27554
  await this._apiService.stopContinuousDebugSession(this.sessionId);
27498
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
27555
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
27499
27556
  }
27500
27557
  else {
27501
27558
  await this._apiService.cancelSession(this.sessionId);
@@ -27519,7 +27576,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27519
27576
  * The function receives the click event as its parameter and
27520
27577
  * should return `false` to prevent the default button action,
27521
27578
  * or `true` (or nothing) to allow it.
27522
- */
27579
+ */
27523
27580
  set recordingButtonClickHandler(handler) {
27524
27581
  this._sessionWidget.buttonClickExternalHandler = handler;
27525
27582
  }
@@ -27555,11 +27612,12 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27555
27612
  ...(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
27556
27613
  ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {}),
27557
27614
  },
27615
+ userAttributes: this._userAttributes
27558
27616
  };
27559
27617
  const { state } = await this._apiService.checkRemoteSession(payload);
27560
27618
  if (state == 'START') {
27561
27619
  if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started) {
27562
- await this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS);
27620
+ await this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS);
27563
27621
  }
27564
27622
  }
27565
27623
  else if (state == 'STOP') {
@@ -27608,7 +27666,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27608
27666
  }
27609
27667
  _handleStart() {
27610
27668
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
27611
- this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL);
27669
+ this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL);
27612
27670
  }
27613
27671
  }
27614
27672
  _handleStop(comment) {
@@ -27638,14 +27696,14 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27638
27696
  }
27639
27697
  _handleContinuousDebugging() {
27640
27698
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
27641
- this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS);
27699
+ this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS);
27642
27700
  }
27643
27701
  }
27644
27702
  /**
27645
27703
  * Register session limit reaching listeners for controlling session end
27646
27704
  */
27647
27705
  _registerSessionLimitReach() {
27648
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STOPPED_EVENT, () => {
27706
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STOPPED_EVENT, () => {
27649
27707
  this._stop();
27650
27708
  this._clearSession();
27651
27709
  this._sessionWidget.handleUIReseting();
@@ -27655,7 +27713,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27655
27713
  * Register session auto creation listeners during continuous recording
27656
27714
  */
27657
27715
  _registerSessionAutoCreation() {
27658
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_AUTO_CREATED, (payload) => {
27716
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_AUTO_CREATED, (payload) => {
27659
27717
  var _a;
27660
27718
  if (!(payload === null || payload === void 0 ? void 0 : payload.data))
27661
27719
  return;
@@ -27669,6 +27727,18 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27669
27727
  }, 5000);
27670
27728
  });
27671
27729
  }
27730
+ _registerRemoteSessionRecordingStart() {
27731
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_START, (payload) => {
27732
+ console.log('REMOTE_SESSION_RECORDING_START', payload);
27733
+ this.start();
27734
+ });
27735
+ }
27736
+ _registerRemoteSessionRecordingStop() {
27737
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_STOP, (payload) => {
27738
+ console.log('REMOTE_SESSION_RECORDING_STOP', payload);
27739
+ this.stop();
27740
+ });
27741
+ }
27672
27742
  /**
27673
27743
  * Create a new session and start it
27674
27744
  */
@@ -27679,6 +27749,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27679
27749
  const payload = {
27680
27750
  sessionAttributes: this.sessionAttributes,
27681
27751
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
27752
+ userAttributes: this._userAttributes,
27682
27753
  name: this.sessionAttributes.userName
27683
27754
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
27684
27755
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
@@ -27690,8 +27761,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27690
27761
  : await this._apiService.startSession(request, signal);
27691
27762
  if (session) {
27692
27763
  session.sessionType = this.continuousRecording
27693
- ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS
27694
- : _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
27764
+ ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS
27765
+ : _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
27695
27766
  this._setupSessionAndStart(session, false);
27696
27767
  }
27697
27768
  }
@@ -27699,7 +27770,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27699
27770
  this.error = error.message;
27700
27771
  this.sessionState = _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
27701
27772
  if (this.continuousRecording) {
27702
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
27773
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
27703
27774
  }
27704
27775
  }
27705
27776
  }
@@ -27714,7 +27785,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27714
27785
  this._recorder.start(this.sessionId, this.sessionType);
27715
27786
  this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType, });
27716
27787
  if (this.session) {
27717
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STARTED_EVENT, this.session);
27788
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STARTED_EVENT, this.session);
27718
27789
  this._recorder.subscribeToSession(this.session);
27719
27790
  this._sessionWidget.seconds = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getTimeDifferenceInSeconds)((_a = this.session) === null || _a === void 0 ? void 0 : _a.startedAt);
27720
27791
  }
@@ -27840,6 +27911,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27840
27911
  return { errorInfo: String(errorInfo) };
27841
27912
  }
27842
27913
  }
27914
+ setUser(userAttributes) {
27915
+ this._userAttributes = userAttributes;
27916
+ _services_socket_service__WEBPACK_IMPORTED_MODULE_4__.socketService === null || _services_socket_service__WEBPACK_IMPORTED_MODULE_4__.socketService === void 0 ? void 0 : _services_socket_service__WEBPACK_IMPORTED_MODULE_4__.socketService.setUser(this._userAttributes);
27917
+ }
27843
27918
  }
27844
27919
 
27845
27920
 
@@ -29190,6 +29265,27 @@ const getButtonTemplate = (button) => {
29190
29265
  };
29191
29266
 
29192
29267
 
29268
+ /***/ }),
29269
+
29270
+ /***/ "./src/types/client-type.enum.ts":
29271
+ /*!***************************************!*\
29272
+ !*** ./src/types/client-type.enum.ts ***!
29273
+ \***************************************/
29274
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
29275
+
29276
+ "use strict";
29277
+ __webpack_require__.r(__webpack_exports__);
29278
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
29279
+ /* harmony export */ UserType: () => (/* binding */ UserType)
29280
+ /* harmony export */ });
29281
+ var UserType;
29282
+ (function (UserType) {
29283
+ UserType["USER"] = "USER";
29284
+ UserType["VISITOR"] = "VISITOR";
29285
+ UserType["API_CLIENT"] = "API_CLIENT";
29286
+ })(UserType || (UserType = {}));
29287
+
29288
+
29193
29289
  /***/ }),
29194
29290
 
29195
29291
  /***/ "./src/types/index.ts":
@@ -29203,11 +29299,14 @@ __webpack_require__.r(__webpack_exports__);
29203
29299
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
29204
29300
  /* harmony export */ DebugSessionDataType: () => (/* reexport safe */ _session__WEBPACK_IMPORTED_MODULE_1__.DebugSessionDataType),
29205
29301
  /* harmony export */ SessionState: () => (/* reexport safe */ _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__.SessionState),
29302
+ /* harmony export */ UserType: () => (/* reexport safe */ _client_type_enum__WEBPACK_IMPORTED_MODULE_3__.UserType),
29206
29303
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__.WidgetButtonPlacement)
29207
29304
  /* harmony export */ });
29208
29305
  /* harmony import */ var _widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./widget */ "./src/types/widget.ts");
29209
29306
  /* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./session */ "./src/types/session.ts");
29210
29307
  /* harmony import */ var _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sessionRecorder */ "./src/types/sessionRecorder.ts");
29308
+ /* harmony import */ var _client_type_enum__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./client-type.enum */ "./src/types/client-type.enum.ts");
29309
+
29211
29310
 
29212
29311
 
29213
29312
 
@@ -49373,6 +49472,7 @@ __webpack_require__.r(__webpack_exports__);
49373
49472
  /* harmony export */ SessionRecorderTraceIdRatioBasedSampler: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_6__.SessionRecorderTraceIdRatioBasedSampler),
49374
49473
  /* harmony export */ SessionState: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.SessionState),
49375
49474
  /* harmony export */ SessionType: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_6__.SessionType),
49475
+ /* harmony export */ UserType: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.UserType),
49376
49476
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.WidgetButtonPlacement),
49377
49477
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
49378
49478
  /* harmony export */ recorderEventBus: () => (/* reexport safe */ _eventBus__WEBPACK_IMPORTED_MODULE_2__.recorderEventBus)