@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
package/dist/index.umd.js CHANGED
@@ -24288,6 +24288,8 @@ module.exports = {
24288
24288
  /* harmony export */ OTEL_IGNORE_URLS: () => (/* binding */ OTEL_IGNORE_URLS),
24289
24289
  /* harmony export */ OTEL_MP_SAMPLE_TRACE_RATIO: () => (/* binding */ OTEL_MP_SAMPLE_TRACE_RATIO),
24290
24290
  /* harmony export */ PACKAGE_VERSION_EXPORT: () => (/* binding */ PACKAGE_VERSION_EXPORT),
24291
+ /* harmony export */ REMOTE_SESSION_RECORDING_START: () => (/* binding */ REMOTE_SESSION_RECORDING_START),
24292
+ /* harmony export */ REMOTE_SESSION_RECORDING_STOP: () => (/* binding */ REMOTE_SESSION_RECORDING_STOP),
24291
24293
  /* harmony export */ SESSION_ADD_EVENT: () => (/* binding */ SESSION_ADD_EVENT),
24292
24294
  /* harmony export */ SESSION_AUTO_CREATED: () => (/* binding */ SESSION_AUTO_CREATED),
24293
24295
  /* harmony export */ SESSION_ID_PROP_NAME: () => (/* binding */ SESSION_ID_PROP_NAME),
@@ -24298,7 +24300,8 @@ module.exports = {
24298
24300
  /* harmony export */ SESSION_STOPPED_EVENT: () => (/* binding */ SESSION_STOPPED_EVENT),
24299
24301
  /* harmony export */ SESSION_SUBSCRIBE_EVENT: () => (/* binding */ SESSION_SUBSCRIBE_EVENT),
24300
24302
  /* harmony export */ SESSION_TYPE_PROP_NAME: () => (/* binding */ SESSION_TYPE_PROP_NAME),
24301
- /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* binding */ SESSION_UNSUBSCRIBE_EVENT)
24303
+ /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* binding */ SESSION_UNSUBSCRIBE_EVENT),
24304
+ /* harmony export */ SOCKET_SET_USER_EVENT: () => (/* binding */ SOCKET_SET_USER_EVENT)
24302
24305
  /* harmony export */ });
24303
24306
  /* unused harmony export SESSION_SHORT_ID_PROP_NAME */
24304
24307
  const OTEL_MP_SAMPLE_TRACE_RATIO = 0.15;
@@ -24313,11 +24316,14 @@ const SESSION_SUBSCRIBE_EVENT = 'debug-session:subscribe';
24313
24316
  const SESSION_UNSUBSCRIBE_EVENT = 'debug-session:unsubscribe';
24314
24317
  const SESSION_AUTO_CREATED = 'debug-session:auto-created';
24315
24318
  const SESSION_ADD_EVENT = 'debug-session:rrweb:add-event';
24319
+ const SOCKET_SET_USER_EVENT = 'socket:set-user';
24316
24320
  const DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE = 100000;
24317
24321
  const SESSION_RESPONSE = 'multiplayer-debug-session-response';
24318
24322
  const CONTINUOUS_DEBUGGING_TIMEOUT = 60000; // 1 minutes
24319
24323
  const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30; // TODO: move to shared config otel core
24320
- const PACKAGE_VERSION_EXPORT = "1.2.36" || 0;
24324
+ const REMOTE_SESSION_RECORDING_START = 'remote-session-recording:start';
24325
+ const REMOTE_SESSION_RECORDING_STOP = 'remote-session-recording:stop';
24326
+ const PACKAGE_VERSION_EXPORT = "1.3.0" || 0;
24321
24327
  // Regex patterns for OpenTelemetry ignore URLs
24322
24328
  const OTEL_IGNORE_URLS = [
24323
24329
  // Traces endpoint
@@ -24412,6 +24418,7 @@ const BASE_CONFIG = {
24412
24418
  captureHeaders: true,
24413
24419
  masking: DEFAULT_MASKING_CONFIG,
24414
24420
  widgetTextOverrides: DEFAULT_WIDGET_TEXT_CONFIG,
24421
+ useWebsocket: true,
24415
24422
  };
24416
24423
 
24417
24424
 
@@ -24430,6 +24437,8 @@ const BASE_CONFIG = {
24430
24437
  /* harmony export */ DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE),
24431
24438
  /* harmony export */ DEFAULT_WIDGET_TEXT_CONFIG: () => (/* reexport safe */ _defaults__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_WIDGET_TEXT_CONFIG),
24432
24439
  /* harmony export */ OTEL_IGNORE_URLS: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.OTEL_IGNORE_URLS),
24440
+ /* harmony export */ REMOTE_SESSION_RECORDING_START: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.REMOTE_SESSION_RECORDING_START),
24441
+ /* harmony export */ REMOTE_SESSION_RECORDING_STOP: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.REMOTE_SESSION_RECORDING_STOP),
24433
24442
  /* harmony export */ SESSION_ADD_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_ADD_EVENT),
24434
24443
  /* harmony export */ SESSION_AUTO_CREATED: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_AUTO_CREATED),
24435
24444
  /* harmony export */ SESSION_ID_PROP_NAME: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_ID_PROP_NAME),
@@ -24441,6 +24450,7 @@ const BASE_CONFIG = {
24441
24450
  /* harmony export */ SESSION_SUBSCRIBE_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_SUBSCRIBE_EVENT),
24442
24451
  /* harmony export */ SESSION_TYPE_PROP_NAME: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_TYPE_PROP_NAME),
24443
24452
  /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_UNSUBSCRIBE_EVENT),
24453
+ /* harmony export */ SOCKET_SET_USER_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SOCKET_SET_USER_EVENT),
24444
24454
  /* harmony export */ getSessionRecorderConfig: () => (/* reexport safe */ _session_recorder__WEBPACK_IMPORTED_MODULE_4__.getSessionRecorderConfig)
24445
24455
  /* harmony export */ });
24446
24456
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "./src/config/constants.ts");
@@ -24550,6 +24560,7 @@ const getWidgetTextOverridesConfig = (config, defaultConfig) => {
24550
24560
  };
24551
24561
  };
24552
24562
  const getSessionRecorderConfig = (c) => {
24563
+ var _a;
24553
24564
  if (!c) {
24554
24565
  return _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG;
24555
24566
  }
@@ -24575,6 +24586,7 @@ const getSessionRecorderConfig = (c) => {
24575
24586
  captureHeaders: (0,_validators__WEBPACK_IMPORTED_MODULE_3__.isValidBoolean)(c.captureHeaders, _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG.captureHeaders),
24576
24587
  masking: (0,_masking__WEBPACK_IMPORTED_MODULE_2__.getMaskingConfig)(c.masking),
24577
24588
  widgetTextOverrides: getWidgetTextOverridesConfig(c.widgetTextOverrides, _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG.widgetTextOverrides),
24589
+ 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),
24578
24590
  };
24579
24591
  };
24580
24592
 
@@ -25155,14 +25167,7 @@ const getExporterEndpoint = (exporterEndpoint) => {
25155
25167
  return `${trimmedExporterEndpoint}/v1/traces`;
25156
25168
  };
25157
25169
  const getElementTextContent = (element) => {
25158
- const getInnerText = (element) => {
25159
- const slicedText = element.innerText.slice(0, 50);
25160
- if (slicedText.length < element.innerText.length) {
25161
- return `${slicedText}...`;
25162
- }
25163
- return slicedText;
25164
- };
25165
- return String(element.textContent || element.ariaLabel || getInnerText(element) || '').trim();
25170
+ return String(element.textContent || element.ariaLabel || '').trim();
25166
25171
  };
25167
25172
 
25168
25173
 
@@ -25386,6 +25391,7 @@ class TracerBrowserSDK {
25386
25391
  });
25387
25392
  return;
25388
25393
  }
25394
+ // eslint-disable-next-line
25389
25395
  }
25390
25396
  catch (_ignored) { }
25391
25397
  // Fallback: create a short-lived span to hold the exception details
@@ -25401,6 +25407,7 @@ class TracerBrowserSDK {
25401
25407
  ...(errorInfo || {}),
25402
25408
  });
25403
25409
  span.end();
25410
+ // eslint-disable-next-line
25404
25411
  }
25405
25412
  catch (_ignored) { }
25406
25413
  }
@@ -25422,12 +25429,14 @@ class TracerBrowserSDK {
25422
25429
  return;
25423
25430
  if (typeof window === 'undefined')
25424
25431
  return;
25432
+ // eslint-disable-next-line
25425
25433
  const errorHandler = (event) => {
25426
25434
  const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error
25427
25435
  ? event.error
25428
25436
  : new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
25429
25437
  this.captureException(err);
25430
25438
  };
25439
+ // eslint-disable-next-line
25431
25440
  const rejectionHandler = (event) => {
25432
25441
  const reason = (event && 'reason' in event) ? event.reason : undefined;
25433
25442
  const err = reason instanceof Error
@@ -25604,6 +25613,7 @@ if (typeof window !== 'undefined' && typeof window.fetch !== 'undefined') {
25604
25613
  : (typeof input === 'string' || input instanceof URL ? String(input) : '');
25605
25614
  // Only attempt to read the body from init (safe); avoid constructing/cloning Requests
25606
25615
  // If the caller passed a Request as input, we do not attempt to read its body here
25616
+ // eslint-disable-next-line
25607
25617
  const candidateBody = init === null || init === void 0 ? void 0 : init.body;
25608
25618
  if (!(0,_utils_type_utils__WEBPACK_IMPORTED_MODULE_0__.isNullish)(candidateBody)) {
25609
25619
  const requestBody = _tryReadFetchBody({
@@ -25795,169 +25805,6 @@ if (typeof XMLHttpRequest !== 'undefined') {
25795
25805
  }
25796
25806
 
25797
25807
 
25798
- /***/ }),
25799
-
25800
- /***/ "./src/rrweb/exporter.ts":
25801
- /*!*******************************!*\
25802
- !*** ./src/rrweb/exporter.ts ***!
25803
- \*******************************/
25804
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
25805
-
25806
- "use strict";
25807
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25808
- /* harmony export */ RrwebEventExporter: () => (/* binding */ RrwebEventExporter)
25809
- /* harmony export */ });
25810
- /* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-client */ "../../node_modules/socket.io-client/build/esm/index.js");
25811
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventBus */ "./src/eventBus.ts");
25812
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/messaging.service */ "./src/services/messaging.service.ts");
25813
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25814
-
25815
-
25816
-
25817
-
25818
- const MAX_RECONNECTION_ATTEMPTS = 2;
25819
- class RrwebEventExporter {
25820
- constructor(options) {
25821
- this.options = options;
25822
- this.socket = null;
25823
- this.queue = [];
25824
- this.isConnecting = false;
25825
- this.isConnected = false;
25826
- this.usePostMessage = false;
25827
- this.attempts = 0;
25828
- this.sessionId = null;
25829
- }
25830
- init() {
25831
- if (this.isConnecting || this.isConnected)
25832
- return;
25833
- this.attempts++;
25834
- this.isConnecting = true;
25835
- this.usePostMessage = false;
25836
- this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options.socketUrl, {
25837
- path: '/v0/radar/ws',
25838
- auth: {
25839
- 'x-api-key': this.options.apiKey,
25840
- },
25841
- reconnectionAttempts: 2,
25842
- transports: ['websocket'],
25843
- });
25844
- // this.socket.on('connect', () => {
25845
- // this.isConnecting = false
25846
- // this.isConnected = true
25847
- // this.usePostMessage = false
25848
- // this.flushQueue()
25849
- // })
25850
- this.socket.on('ready', () => {
25851
- this.isConnecting = false;
25852
- this.isConnected = true;
25853
- this.usePostMessage = false;
25854
- this.flushQueue();
25855
- });
25856
- this.socket.on('disconnect', (err) => {
25857
- this.isConnecting = false;
25858
- this.isConnected = false;
25859
- });
25860
- this.socket.on('connect_error', (err) => {
25861
- this.isConnecting = false;
25862
- this.isConnected = false;
25863
- this.checkReconnectionAttempts();
25864
- });
25865
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, (data) => {
25866
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, data);
25867
- this.unsubscribeFromSession();
25868
- });
25869
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, (data) => {
25870
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, data);
25871
- });
25872
- }
25873
- checkReconnectionAttempts() {
25874
- if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
25875
- this.usePostMessage = !!this.options.usePostMessageFallback;
25876
- this.flushQueue();
25877
- }
25878
- }
25879
- sendViaPostMessage(event) {
25880
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('rrweb-event', event);
25881
- }
25882
- flushQueue() {
25883
- var _a, _b;
25884
- while (this.queue.length > 0 && (this.usePostMessage || ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected))) {
25885
- const event = this.queue.shift();
25886
- if (!event)
25887
- continue;
25888
- if (this.usePostMessage) {
25889
- this.sendViaPostMessage(event.data);
25890
- }
25891
- else if ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.connected) {
25892
- this.socket.emit(event.name, event.data);
25893
- }
25894
- }
25895
- }
25896
- unsubscribeFromSession() {
25897
- var _a;
25898
- const payload = {
25899
- debugSessionId: this.sessionId,
25900
- };
25901
- if (this.usePostMessage) {
25902
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('socket-emit', { event: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, data: payload });
25903
- }
25904
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25905
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, payload);
25906
- }
25907
- }
25908
- send(event) {
25909
- var _a;
25910
- if (this.usePostMessage) {
25911
- this.sendViaPostMessage(event);
25912
- }
25913
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25914
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT, event);
25915
- }
25916
- else {
25917
- this.queue.push({ data: event, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT });
25918
- this.init();
25919
- }
25920
- }
25921
- subscribeToSession(session) {
25922
- var _a;
25923
- this.sessionId = session.shortId || session._id;
25924
- const payload = {
25925
- projectId: session.project,
25926
- workspaceId: session.workspace,
25927
- debugSessionId: this.sessionId,
25928
- sessionType: session.creationType,
25929
- };
25930
- if (this.usePostMessage) {
25931
- this.sendViaPostMessage({ type: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, ...payload });
25932
- }
25933
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25934
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, payload);
25935
- }
25936
- else {
25937
- this.queue.push({ data: payload, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT });
25938
- this.init();
25939
- }
25940
- }
25941
- close() {
25942
- var _a;
25943
- if (this.usePostMessage) {
25944
- this.sendViaPostMessage({ type: 'close' });
25945
- }
25946
- if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25947
- setTimeout(() => {
25948
- var _a;
25949
- this.unsubscribeFromSession();
25950
- this.attempts = 0;
25951
- this.isConnected = false;
25952
- this.isConnecting = false;
25953
- (_a = this.socket) === null || _a === void 0 ? void 0 : _a.disconnect();
25954
- this.socket = null;
25955
- }, 500);
25956
- }
25957
- }
25958
- }
25959
-
25960
-
25961
25808
  /***/ }),
25962
25809
 
25963
25810
  /***/ "./src/rrweb/index.ts":
@@ -25976,7 +25823,7 @@ class RrwebEventExporter {
25976
25823
  /* 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");
25977
25824
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./src/utils/index.ts");
25978
25825
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25979
- /* harmony import */ var _exporter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exporter */ "./src/rrweb/exporter.ts");
25826
+ /* harmony import */ var _services_socket_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../services/socket.service */ "./src/services/socket.service.ts");
25980
25827
 
25981
25828
 
25982
25829
 
@@ -26008,11 +25855,6 @@ class RecorderBrowserSDK {
26008
25855
  */
26009
25856
  init(config) {
26010
25857
  this.config = config;
26011
- this.exporter = new _exporter__WEBPACK_IMPORTED_MODULE_5__.RrwebEventExporter({
26012
- apiKey: config.apiKey,
26013
- socketUrl: config.apiBaseUrl || '',
26014
- usePostMessageFallback: Boolean(config.usePostMessageFallback),
26015
- });
26016
25858
  }
26017
25859
  /**
26018
25860
  * Starts recording events for a given session ID.
@@ -26058,7 +25900,7 @@ class RecorderBrowserSDK {
26058
25900
  this.stopFn = (0,rrweb__WEBPACK_IMPORTED_MODULE_6__.record)({
26059
25901
  ...options,
26060
25902
  emit: async (event) => {
26061
- if (this.exporter) {
25903
+ if (_services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService) {
26062
25904
  if (typeof maskingConfig.maskConsoleEvent === 'function' && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isConsoleEvent)(event)) {
26063
25905
  const { data } = event;
26064
25906
  const maskedPayload = maskingConfig.maskConsoleEvent(data.payload);
@@ -26066,7 +25908,7 @@ class RecorderBrowserSDK {
26066
25908
  }
26067
25909
  const packedEvent = (0,_rrweb_packer__WEBPACK_IMPORTED_MODULE_0__.pack)(event);
26068
25910
  this.stoppedAt = new Date(event.timestamp).toISOString();
26069
- this.exporter.send({
25911
+ _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService.send({
26070
25912
  event: packedEvent,
26071
25913
  eventType: event.type,
26072
25914
  timestamp: event.timestamp,
@@ -26107,12 +25949,13 @@ class RecorderBrowserSDK {
26107
25949
  stop() {
26108
25950
  var _a, _b;
26109
25951
  (_a = this.stopFn) === null || _a === void 0 ? void 0 : _a.call(this);
26110
- (_b = this.exporter) === null || _b === void 0 ? void 0 : _b.close();
25952
+ if (!((_b = this.config) === null || _b === void 0 ? void 0 : _b.useWebsocket)) {
25953
+ _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();
25954
+ }
26111
25955
  this.clearRestartInterval();
26112
25956
  }
26113
25957
  subscribeToSession(session) {
26114
- var _a;
26115
- (_a = this.exporter) === null || _a === void 0 ? void 0 : _a.subscribeToSession(session);
25958
+ _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);
26116
25959
  }
26117
25960
  }
26118
25961
 
@@ -26371,6 +26214,207 @@ const messagingService = new MessagingService();
26371
26214
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (messagingService);
26372
26215
 
26373
26216
 
26217
+ /***/ }),
26218
+
26219
+ /***/ "./src/services/socket.service.ts":
26220
+ /*!****************************************!*\
26221
+ !*** ./src/services/socket.service.ts ***!
26222
+ \****************************************/
26223
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26224
+
26225
+ "use strict";
26226
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26227
+ /* harmony export */ createSocketService: () => (/* binding */ createSocketService),
26228
+ /* harmony export */ socketService: () => (/* binding */ socketService)
26229
+ /* harmony export */ });
26230
+ /* unused harmony export SocketService */
26231
+ /* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-client */ "../../node_modules/socket.io-client/build/esm/index.js");
26232
+ /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventBus */ "./src/eventBus.ts");
26233
+ /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/messaging.service */ "./src/services/messaging.service.ts");
26234
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
26235
+
26236
+
26237
+
26238
+
26239
+ const MAX_RECONNECTION_ATTEMPTS = 2;
26240
+ class SocketService {
26241
+ constructor(options) {
26242
+ this.options = options;
26243
+ this.socket = null;
26244
+ this.queue = [];
26245
+ this.isConnecting = false;
26246
+ this.isConnected = false;
26247
+ this.usePostMessage = false;
26248
+ this.attempts = 0;
26249
+ this.sessionId = null;
26250
+ if (this.options.keepAlive
26251
+ && this.options.socketUrl
26252
+ && this.options.apiKey) {
26253
+ this.init();
26254
+ }
26255
+ }
26256
+ init() {
26257
+ if (this.isConnecting || this.isConnected)
26258
+ return;
26259
+ this.attempts++;
26260
+ this.isConnecting = true;
26261
+ this.usePostMessage = false;
26262
+ this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options.socketUrl, {
26263
+ path: '/v0/radar/ws',
26264
+ auth: {
26265
+ 'x-api-key': this.options.apiKey,
26266
+ },
26267
+ reconnectionAttempts: 2,
26268
+ transports: ['websocket'],
26269
+ });
26270
+ // this.socket.on('connect', () => {
26271
+ // this.isConnecting = false
26272
+ // this.isConnected = true
26273
+ // this.usePostMessage = false
26274
+ // this.flushQueue()
26275
+ // })
26276
+ this.socket.on('ready', () => {
26277
+ this.isConnecting = false;
26278
+ this.isConnected = true;
26279
+ this.usePostMessage = false;
26280
+ this.flushQueue();
26281
+ });
26282
+ this.socket.on('disconnect', (err) => {
26283
+ this.isConnecting = false;
26284
+ this.isConnected = false;
26285
+ });
26286
+ this.socket.on('connect_error', (err) => {
26287
+ this.isConnecting = false;
26288
+ this.isConnected = false;
26289
+ this.checkReconnectionAttempts();
26290
+ });
26291
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, (data) => {
26292
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, data);
26293
+ this.unsubscribeFromSession();
26294
+ });
26295
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, (data) => {
26296
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, data);
26297
+ });
26298
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_START, (data) => {
26299
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_START, data);
26300
+ });
26301
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_STOP, (data) => {
26302
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_STOP, data);
26303
+ });
26304
+ }
26305
+ checkReconnectionAttempts() {
26306
+ if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
26307
+ this.usePostMessage = !!this.options.usePostMessageFallback;
26308
+ this.flushQueue();
26309
+ }
26310
+ }
26311
+ sendViaPostMessage(event) {
26312
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('rrweb-event', event);
26313
+ }
26314
+ flushQueue() {
26315
+ var _a, _b;
26316
+ while (this.queue.length > 0 && (this.usePostMessage || ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected))) {
26317
+ const event = this.queue.shift();
26318
+ if (!event)
26319
+ continue;
26320
+ if (this.usePostMessage) {
26321
+ this.sendViaPostMessage(event.data);
26322
+ }
26323
+ else if ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.connected) {
26324
+ this.socket.emit(event.name, event.data);
26325
+ }
26326
+ }
26327
+ }
26328
+ unsubscribeFromSession() {
26329
+ var _a;
26330
+ const payload = {
26331
+ debugSessionId: this.sessionId,
26332
+ };
26333
+ if (this.usePostMessage) {
26334
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('socket-emit', { event: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, data: payload });
26335
+ }
26336
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26337
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, payload);
26338
+ }
26339
+ }
26340
+ send(event) {
26341
+ var _a;
26342
+ if (this.usePostMessage) {
26343
+ this.sendViaPostMessage(event);
26344
+ }
26345
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26346
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT, event);
26347
+ }
26348
+ else {
26349
+ this.queue.push({ data: event, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT });
26350
+ this.init();
26351
+ }
26352
+ }
26353
+ subscribeToSession(session) {
26354
+ var _a;
26355
+ this.sessionId = session.shortId || session._id;
26356
+ const payload = {
26357
+ projectId: session.project,
26358
+ workspaceId: session.workspace,
26359
+ debugSessionId: this.sessionId,
26360
+ sessionType: session.creationType,
26361
+ };
26362
+ if (this.usePostMessage) {
26363
+ this.sendViaPostMessage({
26364
+ type: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT,
26365
+ ...payload,
26366
+ });
26367
+ }
26368
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26369
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, payload);
26370
+ }
26371
+ else {
26372
+ this.queue.push({
26373
+ data: payload,
26374
+ name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT,
26375
+ });
26376
+ this.init();
26377
+ }
26378
+ }
26379
+ setUser(userAttributes) {
26380
+ var _a;
26381
+ if (this.usePostMessage) {
26382
+ this.sendViaPostMessage({
26383
+ type: _config__WEBPACK_IMPORTED_MODULE_3__.SOCKET_SET_USER_EVENT,
26384
+ data: userAttributes,
26385
+ });
26386
+ }
26387
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26388
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SOCKET_SET_USER_EVENT, userAttributes);
26389
+ }
26390
+ }
26391
+ close() {
26392
+ var _a;
26393
+ if (this.usePostMessage) {
26394
+ this.sendViaPostMessage({ type: 'close' });
26395
+ }
26396
+ if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26397
+ setTimeout(() => {
26398
+ var _a;
26399
+ this.unsubscribeFromSession();
26400
+ this.attempts = 0;
26401
+ this.isConnected = false;
26402
+ this.isConnecting = false;
26403
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.disconnect();
26404
+ this.socket = null;
26405
+ }, 500);
26406
+ }
26407
+ }
26408
+ }
26409
+ let socketService = null;
26410
+ const createSocketService = (options) => {
26411
+ if (!socketService) {
26412
+ socketService = new SocketService(options);
26413
+ }
26414
+ return socketService;
26415
+ };
26416
+
26417
+
26374
26418
  /***/ }),
26375
26419
 
26376
26420
  /***/ "./src/sessionRecorder.ts":
@@ -26387,17 +26431,18 @@ const messagingService = new MessagingService();
26387
26431
  /* harmony import */ var _rrweb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rrweb */ "./src/rrweb/index.ts");
26388
26432
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils/index.ts");
26389
26433
  /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./src/types/index.ts");
26390
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ "./src/config/index.ts");
26391
- /* harmony import */ var _patch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./patch */ "./src/patch/index.ts");
26392
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./eventBus */ "./src/eventBus.ts");
26393
- /* harmony import */ var _sessionWidget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./sessionWidget */ "./src/sessionWidget/index.ts");
26394
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./services/messaging.service */ "./src/services/messaging.service.ts");
26395
- /* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./services/api.service */ "./src/services/api.service.ts");
26396
- /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./index.scss */ "./src/index.scss");
26397
- /* 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");
26398
- /* harmony import */ var _sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sessionWidget/buttonStateConfigs */ "./src/sessionWidget/buttonStateConfigs.ts");
26399
- /* harmony import */ var lib0_observable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lib0/observable */ "../../node_modules/lib0/observable.js");
26400
- /* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./navigation */ "./src/navigation/index.ts");
26434
+ /* harmony import */ var _services_socket_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./services/socket.service */ "./src/services/socket.service.ts");
26435
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config */ "./src/config/index.ts");
26436
+ /* harmony import */ var _patch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./patch */ "./src/patch/index.ts");
26437
+ /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./eventBus */ "./src/eventBus.ts");
26438
+ /* harmony import */ var _sessionWidget__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./sessionWidget */ "./src/sessionWidget/index.ts");
26439
+ /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./services/messaging.service */ "./src/services/messaging.service.ts");
26440
+ /* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./services/api.service */ "./src/services/api.service.ts");
26441
+ /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./index.scss */ "./src/index.scss");
26442
+ /* 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");
26443
+ /* harmony import */ var _sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sessionWidget/buttonStateConfigs */ "./src/sessionWidget/buttonStateConfigs.ts");
26444
+ /* harmony import */ var lib0_observable__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! lib0/observable */ "../../node_modules/lib0/observable.js");
26445
+ /* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./navigation */ "./src/navigation/index.ts");
26401
26446
 
26402
26447
 
26403
26448
 
@@ -26413,7 +26458,8 @@ const messagingService = new MessagingService();
26413
26458
 
26414
26459
 
26415
26460
 
26416
- class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Observable {
26461
+
26462
+ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_15__.Observable {
26417
26463
  get navigation() {
26418
26464
  return this._navigationRecorder.api;
26419
26465
  }
@@ -26425,20 +26471,20 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26425
26471
  }
26426
26472
  set sessionId(sessionId) {
26427
26473
  this._sessionId = sessionId;
26428
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_ID_PROP_NAME, sessionId);
26474
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_ID_PROP_NAME, sessionId);
26429
26475
  }
26430
26476
  get sessionType() {
26431
26477
  return this._sessionType;
26432
26478
  }
26433
26479
  set sessionType(sessionType) {
26434
26480
  this._sessionType = sessionType;
26435
- const continuousRecording = sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS;
26481
+ const continuousRecording = sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS;
26436
26482
  this._sessionWidget.updateContinuousRecordingState(continuousRecording);
26437
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('continuous-debugging', continuousRecording);
26438
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_TYPE_PROP_NAME, sessionType);
26483
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('continuous-debugging', continuousRecording);
26484
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_TYPE_PROP_NAME, sessionType);
26439
26485
  }
26440
26486
  get continuousRecording() {
26441
- return this.sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS;
26487
+ return this.sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS;
26442
26488
  }
26443
26489
  get sessionState() {
26444
26490
  return this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
@@ -26446,8 +26492,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26446
26492
  set sessionState(state) {
26447
26493
  this._sessionState = state;
26448
26494
  this._sessionWidget.updateState(this._sessionState, this.continuousRecording);
26449
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('state-change', this._sessionState);
26450
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STATE_PROP_NAME, state);
26495
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this._sessionState);
26496
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STATE_PROP_NAME, state);
26451
26497
  // Emit observable event to support React wrapper
26452
26498
  this.emit('state-change', [this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped, this.sessionType]);
26453
26499
  }
@@ -26456,7 +26502,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26456
26502
  }
26457
26503
  set session(session) {
26458
26504
  this._session = session;
26459
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_PROP_NAME, this._session);
26505
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_PROP_NAME, this._session);
26460
26506
  }
26461
26507
  get sessionAttributes() {
26462
26508
  return this._sessionAttributes || {};
@@ -26488,16 +26534,17 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26488
26534
  constructor() {
26489
26535
  var _a;
26490
26536
  super();
26491
- this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_9__.ApiService();
26537
+ this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_10__.ApiService();
26492
26538
  this._tracer = new _otel__WEBPACK_IMPORTED_MODULE_0__.TracerBrowserSDK();
26493
26539
  this._recorder = new _rrweb__WEBPACK_IMPORTED_MODULE_1__.RecorderBrowserSDK();
26494
- this._sessionWidget = new _sessionWidget__WEBPACK_IMPORTED_MODULE_7__.SessionWidget();
26495
- this._navigationRecorder = new _navigation__WEBPACK_IMPORTED_MODULE_13__.NavigationRecorder();
26540
+ this._sessionWidget = new _sessionWidget__WEBPACK_IMPORTED_MODULE_8__.SessionWidget();
26541
+ this._navigationRecorder = new _navigation__WEBPACK_IMPORTED_MODULE_14__.NavigationRecorder();
26542
+ this._userAttributes = undefined;
26496
26543
  this._startRequestController = null;
26497
26544
  this._isInitialized = false;
26498
26545
  // Session ID and state are stored in localStorage
26499
26546
  this._sessionId = null;
26500
- this._sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26547
+ this._sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26501
26548
  this._sessionState = null;
26502
26549
  this._session = null;
26503
26550
  this._sessionAttributes = null;
@@ -26507,10 +26554,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26507
26554
  this._error = '';
26508
26555
  // Safety: avoid accessing storage in SSR/non-browser environments
26509
26556
  const isBrowser = typeof window !== 'undefined';
26510
- const sessionLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_PROP_NAME, true) : null;
26511
- const sessionIdLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_ID_PROP_NAME) : null;
26512
- const sessionStateLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STATE_PROP_NAME) : null;
26513
- const sessionTypeLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_TYPE_PROP_NAME) : null;
26557
+ const sessionLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_PROP_NAME, true) : null;
26558
+ const sessionIdLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_ID_PROP_NAME) : null;
26559
+ const sessionStateLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STATE_PROP_NAME) : null;
26560
+ const sessionTypeLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_TYPE_PROP_NAME) : null;
26514
26561
  if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isSessionActive)(sessionLocal, sessionTypeLocal)) {
26515
26562
  this.session = sessionLocal;
26516
26563
  this.sessionId = sessionIdLocal;
@@ -26521,10 +26568,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26521
26568
  this.session = null;
26522
26569
  this.sessionId = null;
26523
26570
  this.sessionState = null;
26524
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26571
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26525
26572
  }
26526
26573
  this._configs = {
26527
- ..._config__WEBPACK_IMPORTED_MODULE_4__.BASE_CONFIG,
26574
+ ..._config__WEBPACK_IMPORTED_MODULE_5__.BASE_CONFIG,
26528
26575
  apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || '',
26529
26576
  };
26530
26577
  }
@@ -26536,11 +26583,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26536
26583
  if (typeof window === 'undefined') {
26537
26584
  return;
26538
26585
  }
26539
- this._configs = (0,_config__WEBPACK_IMPORTED_MODULE_4__.getSessionRecorderConfig)({ ...this._configs, ...configs });
26586
+ this._configs = (0,_config__WEBPACK_IMPORTED_MODULE_5__.getSessionRecorderConfig)({ ...this._configs, ...configs });
26540
26587
  this._isInitialized = true;
26541
26588
  this._checkOperation('init');
26542
- (0,_patch__WEBPACK_IMPORTED_MODULE_5__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
26543
- (0,_patch__WEBPACK_IMPORTED_MODULE_5__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
26589
+ (0,_patch__WEBPACK_IMPORTED_MODULE_6__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
26590
+ (0,_patch__WEBPACK_IMPORTED_MODULE_6__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
26544
26591
  this._tracer.init(this._configs);
26545
26592
  this._apiService.init(this._configs);
26546
26593
  this._sessionWidget.init(this._configs);
@@ -26550,16 +26597,26 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26550
26597
  environment: this._configs.environment,
26551
26598
  version: this._configs.version,
26552
26599
  });
26600
+ (0,_services_socket_service__WEBPACK_IMPORTED_MODULE_4__.createSocketService)({
26601
+ apiKey: this._configs.apiKey,
26602
+ socketUrl: this._configs.apiBaseUrl || '',
26603
+ usePostMessageFallback: Boolean(this._configs.usePostMessageFallback),
26604
+ keepAlive: Boolean(this._configs.useWebsocket),
26605
+ });
26553
26606
  if (this._configs.apiKey) {
26554
26607
  this._recorder.init(this._configs);
26555
26608
  }
26556
- if (this.sessionId && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.paused)) {
26609
+ if (this.sessionId
26610
+ && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started
26611
+ || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.paused)) {
26557
26612
  this._start();
26558
26613
  }
26559
26614
  this._registerWidgetEvents();
26560
26615
  this._registerSessionLimitReach();
26561
26616
  this._registerSessionAutoCreation();
26562
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('state-change', this.sessionState);
26617
+ this._registerRemoteSessionRecordingStart();
26618
+ this._registerRemoteSessionRecordingStop();
26619
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
26563
26620
  // Emit init observable event
26564
26621
  this.emit('init', [this]);
26565
26622
  }
@@ -26572,7 +26629,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26572
26629
  if (!this.continuousRecording || !this._configs.showContinuousRecording) {
26573
26630
  return;
26574
26631
  }
26575
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVING);
26632
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVING);
26576
26633
  const res = await this._apiService.saveContinuousDebugSession(this.sessionId, {
26577
26634
  sessionAttributes: this.sessionAttributes,
26578
26635
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
@@ -26581,7 +26638,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26581
26638
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
26582
26639
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
26583
26640
  });
26584
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVED);
26641
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVED);
26585
26642
  const sessionUrl = res === null || res === void 0 ? void 0 : res.url;
26586
26643
  this._sessionWidget.showToast({
26587
26644
  type: 'success',
@@ -26594,11 +26651,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26594
26651
  }
26595
26652
  catch (error) {
26596
26653
  this.error = error.message;
26597
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.ERROR);
26654
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.ERROR);
26598
26655
  }
26599
26656
  finally {
26600
26657
  setTimeout(() => {
26601
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.IDLE);
26658
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.IDLE);
26602
26659
  }, 3000);
26603
26660
  }
26604
26661
  }
@@ -26607,11 +26664,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26607
26664
  * @param type - the type of session to start
26608
26665
  * @param session - the session to start
26609
26666
  */
26610
- start(type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL, session) {
26667
+ start(type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL, session) {
26611
26668
  this._checkOperation('start');
26612
26669
  // If continuous recording is disabled, force plain mode
26613
- if (type === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS && !this._configs.showContinuousRecording) {
26614
- type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26670
+ if (type === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS && !this._configs.showContinuousRecording) {
26671
+ type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26615
26672
  }
26616
26673
  this.sessionType = type;
26617
26674
  this._startRequestController = new AbortController();
@@ -26632,7 +26689,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26632
26689
  this._stop();
26633
26690
  if (this.continuousRecording) {
26634
26691
  await this._apiService.stopContinuousDebugSession(this.sessionId);
26635
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26692
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26636
26693
  }
26637
26694
  else {
26638
26695
  const request = {
@@ -26640,7 +26697,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26640
26697
  stoppedAt: this._recorder.stoppedAt,
26641
26698
  };
26642
26699
  const response = await this._apiService.stopSession(this.sessionId, request);
26643
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_RESPONSE, response);
26700
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_RESPONSE, response);
26644
26701
  }
26645
26702
  this._clearSession();
26646
26703
  }
@@ -26681,7 +26738,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26681
26738
  this._stop();
26682
26739
  if (this.continuousRecording) {
26683
26740
  await this._apiService.stopContinuousDebugSession(this.sessionId);
26684
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26741
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26685
26742
  }
26686
26743
  else {
26687
26744
  await this._apiService.cancelSession(this.sessionId);
@@ -26705,7 +26762,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26705
26762
  * The function receives the click event as its parameter and
26706
26763
  * should return `false` to prevent the default button action,
26707
26764
  * or `true` (or nothing) to allow it.
26708
- */
26765
+ */
26709
26766
  set recordingButtonClickHandler(handler) {
26710
26767
  this._sessionWidget.buttonClickExternalHandler = handler;
26711
26768
  }
@@ -26741,11 +26798,12 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26741
26798
  ...(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
26742
26799
  ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {}),
26743
26800
  },
26801
+ userAttributes: this._userAttributes
26744
26802
  };
26745
26803
  const { state } = await this._apiService.checkRemoteSession(payload);
26746
26804
  if (state == 'START') {
26747
26805
  if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started) {
26748
- await this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS);
26806
+ await this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS);
26749
26807
  }
26750
26808
  }
26751
26809
  else if (state == 'STOP') {
@@ -26794,7 +26852,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26794
26852
  }
26795
26853
  _handleStart() {
26796
26854
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
26797
- this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL);
26855
+ this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL);
26798
26856
  }
26799
26857
  }
26800
26858
  _handleStop(comment) {
@@ -26824,14 +26882,14 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26824
26882
  }
26825
26883
  _handleContinuousDebugging() {
26826
26884
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
26827
- this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS);
26885
+ this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS);
26828
26886
  }
26829
26887
  }
26830
26888
  /**
26831
26889
  * Register session limit reaching listeners for controlling session end
26832
26890
  */
26833
26891
  _registerSessionLimitReach() {
26834
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STOPPED_EVENT, () => {
26892
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STOPPED_EVENT, () => {
26835
26893
  this._stop();
26836
26894
  this._clearSession();
26837
26895
  this._sessionWidget.handleUIReseting();
@@ -26841,7 +26899,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26841
26899
  * Register session auto creation listeners during continuous recording
26842
26900
  */
26843
26901
  _registerSessionAutoCreation() {
26844
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_AUTO_CREATED, (payload) => {
26902
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_AUTO_CREATED, (payload) => {
26845
26903
  var _a;
26846
26904
  if (!(payload === null || payload === void 0 ? void 0 : payload.data))
26847
26905
  return;
@@ -26855,6 +26913,18 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26855
26913
  }, 5000);
26856
26914
  });
26857
26915
  }
26916
+ _registerRemoteSessionRecordingStart() {
26917
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_START, (payload) => {
26918
+ console.log('REMOTE_SESSION_RECORDING_START', payload);
26919
+ this.start();
26920
+ });
26921
+ }
26922
+ _registerRemoteSessionRecordingStop() {
26923
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_STOP, (payload) => {
26924
+ console.log('REMOTE_SESSION_RECORDING_STOP', payload);
26925
+ this.stop();
26926
+ });
26927
+ }
26858
26928
  /**
26859
26929
  * Create a new session and start it
26860
26930
  */
@@ -26865,6 +26935,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26865
26935
  const payload = {
26866
26936
  sessionAttributes: this.sessionAttributes,
26867
26937
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
26938
+ userAttributes: this._userAttributes,
26868
26939
  name: this.sessionAttributes.userName
26869
26940
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
26870
26941
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
@@ -26876,8 +26947,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26876
26947
  : await this._apiService.startSession(request, signal);
26877
26948
  if (session) {
26878
26949
  session.sessionType = this.continuousRecording
26879
- ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS
26880
- : _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26950
+ ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS
26951
+ : _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26881
26952
  this._setupSessionAndStart(session, false);
26882
26953
  }
26883
26954
  }
@@ -26885,7 +26956,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26885
26956
  this.error = error.message;
26886
26957
  this.sessionState = _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
26887
26958
  if (this.continuousRecording) {
26888
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26959
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26889
26960
  }
26890
26961
  }
26891
26962
  }
@@ -26900,7 +26971,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26900
26971
  this._recorder.start(this.sessionId, this.sessionType);
26901
26972
  this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType, });
26902
26973
  if (this.session) {
26903
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STARTED_EVENT, this.session);
26974
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STARTED_EVENT, this.session);
26904
26975
  this._recorder.subscribeToSession(this.session);
26905
26976
  this._sessionWidget.seconds = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getTimeDifferenceInSeconds)((_a = this.session) === null || _a === void 0 ? void 0 : _a.startedAt);
26906
26977
  }
@@ -27026,6 +27097,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27026
27097
  return { errorInfo: String(errorInfo) };
27027
27098
  }
27028
27099
  }
27100
+ setUser(userAttributes) {
27101
+ this._userAttributes = userAttributes;
27102
+ _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);
27103
+ }
27029
27104
  }
27030
27105
 
27031
27106
 
@@ -28364,6 +28439,26 @@ const getButtonTemplate = (button) => {
28364
28439
  };
28365
28440
 
28366
28441
 
28442
+ /***/ }),
28443
+
28444
+ /***/ "./src/types/client-type.enum.ts":
28445
+ /*!***************************************!*\
28446
+ !*** ./src/types/client-type.enum.ts ***!
28447
+ \***************************************/
28448
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
28449
+
28450
+ "use strict";
28451
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28452
+ /* harmony export */ UserType: () => (/* binding */ UserType)
28453
+ /* harmony export */ });
28454
+ var UserType;
28455
+ (function (UserType) {
28456
+ UserType["USER"] = "USER";
28457
+ UserType["VISITOR"] = "VISITOR";
28458
+ UserType["API_CLIENT"] = "API_CLIENT";
28459
+ })(UserType || (UserType = {}));
28460
+
28461
+
28367
28462
  /***/ }),
28368
28463
 
28369
28464
  /***/ "./src/types/index.ts":
@@ -28376,11 +28471,14 @@ const getButtonTemplate = (button) => {
28376
28471
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28377
28472
  /* harmony export */ DebugSessionDataType: () => (/* reexport safe */ _session__WEBPACK_IMPORTED_MODULE_1__.DebugSessionDataType),
28378
28473
  /* harmony export */ SessionState: () => (/* reexport safe */ _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__.SessionState),
28474
+ /* harmony export */ UserType: () => (/* reexport safe */ _client_type_enum__WEBPACK_IMPORTED_MODULE_3__.UserType),
28379
28475
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__.WidgetButtonPlacement)
28380
28476
  /* harmony export */ });
28381
28477
  /* harmony import */ var _widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./widget */ "./src/types/widget.ts");
28382
28478
  /* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./session */ "./src/types/session.ts");
28383
28479
  /* harmony import */ var _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sessionRecorder */ "./src/types/sessionRecorder.ts");
28480
+ /* harmony import */ var _client_type_enum__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./client-type.enum */ "./src/types/client-type.enum.ts");
28481
+
28384
28482
 
28385
28483
 
28386
28484
 
@@ -48393,6 +48491,7 @@ __webpack_require__.r(__webpack_exports__);
48393
48491
  /* harmony export */ SessionRecorderTraceIdRatioBasedSampler: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_6__.SessionRecorderTraceIdRatioBasedSampler),
48394
48492
  /* harmony export */ SessionState: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.SessionState),
48395
48493
  /* harmony export */ SessionType: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_6__.SessionType),
48494
+ /* harmony export */ UserType: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.UserType),
48396
48495
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.WidgetButtonPlacement),
48397
48496
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
48398
48497
  /* harmony export */ recorderEventBus: () => (/* reexport safe */ _eventBus__WEBPACK_IMPORTED_MODULE_2__.recorderEventBus)