@multiplayer-app/session-recorder-browser 1.2.37 → 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 (52) hide show
  1. package/dist/browser/index.js +339 -232
  2. package/dist/browser/index.js.map +1 -1
  3. package/dist/config/constants.d.ts +3 -0
  4. package/dist/config/constants.d.ts.map +1 -1
  5. package/dist/config/constants.js +3 -0
  6. package/dist/config/constants.js.map +1 -1
  7. package/dist/config/defaults.d.ts.map +1 -1
  8. package/dist/config/defaults.js +1 -0
  9. package/dist/config/defaults.js.map +1 -1
  10. package/dist/config/session-recorder.d.ts.map +1 -1
  11. package/dist/config/session-recorder.js +2 -0
  12. package/dist/config/session-recorder.js.map +1 -1
  13. package/dist/exporters/index.js +182 -114
  14. package/dist/exporters/index.js.map +1 -1
  15. package/dist/exporters.d.ts +1 -1
  16. package/dist/exporters.d.ts.map +1 -1
  17. package/dist/exporters.js +1 -1
  18. package/dist/exporters.js.map +1 -1
  19. package/dist/index.js +337 -231
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.umd.js +337 -231
  22. package/dist/index.umd.js.map +1 -1
  23. package/dist/otel/index.d.ts.map +1 -1
  24. package/dist/otel/index.js +4 -0
  25. package/dist/otel/index.js.map +1 -1
  26. package/dist/patch/fetch.js +1 -0
  27. package/dist/patch/fetch.js.map +1 -1
  28. package/dist/rrweb/index.d.ts +2 -3
  29. package/dist/rrweb/index.d.ts.map +1 -1
  30. package/dist/rrweb/index.js +7 -11
  31. package/dist/rrweb/index.js.map +1 -1
  32. package/dist/services/api.service.d.ts +8 -2
  33. package/dist/services/api.service.d.ts.map +1 -1
  34. package/dist/services/api.service.js.map +1 -1
  35. package/dist/{rrweb/exporter.d.ts → services/socket.service.d.ts} +12 -3
  36. package/dist/services/socket.service.d.ts.map +1 -0
  37. package/dist/{rrweb/exporter.js → services/socket.service.js} +41 -5
  38. package/dist/services/socket.service.js.map +1 -0
  39. package/dist/sessionRecorder.d.ts +6 -2
  40. package/dist/sessionRecorder.d.ts.map +1 -1
  41. package/dist/sessionRecorder.js +33 -3
  42. package/dist/sessionRecorder.js.map +1 -1
  43. package/dist/types/index.d.ts +1 -0
  44. package/dist/types/index.d.ts.map +1 -1
  45. package/dist/types/index.js +1 -0
  46. package/dist/types/index.js.map +1 -1
  47. package/dist/types/sessionRecorder.d.ts +5 -0
  48. package/dist/types/sessionRecorder.d.ts.map +1 -1
  49. package/dist/types/sessionRecorder.js.map +1 -1
  50. package/package.json +3 -3
  51. package/dist/rrweb/exporter.d.ts.map +0 -1
  52. 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.37" || 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
 
@@ -25379,6 +25391,7 @@ class TracerBrowserSDK {
25379
25391
  });
25380
25392
  return;
25381
25393
  }
25394
+ // eslint-disable-next-line
25382
25395
  }
25383
25396
  catch (_ignored) { }
25384
25397
  // Fallback: create a short-lived span to hold the exception details
@@ -25394,6 +25407,7 @@ class TracerBrowserSDK {
25394
25407
  ...(errorInfo || {}),
25395
25408
  });
25396
25409
  span.end();
25410
+ // eslint-disable-next-line
25397
25411
  }
25398
25412
  catch (_ignored) { }
25399
25413
  }
@@ -25415,12 +25429,14 @@ class TracerBrowserSDK {
25415
25429
  return;
25416
25430
  if (typeof window === 'undefined')
25417
25431
  return;
25432
+ // eslint-disable-next-line
25418
25433
  const errorHandler = (event) => {
25419
25434
  const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error
25420
25435
  ? event.error
25421
25436
  : new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
25422
25437
  this.captureException(err);
25423
25438
  };
25439
+ // eslint-disable-next-line
25424
25440
  const rejectionHandler = (event) => {
25425
25441
  const reason = (event && 'reason' in event) ? event.reason : undefined;
25426
25442
  const err = reason instanceof Error
@@ -25597,6 +25613,7 @@ if (typeof window !== 'undefined' && typeof window.fetch !== 'undefined') {
25597
25613
  : (typeof input === 'string' || input instanceof URL ? String(input) : '');
25598
25614
  // Only attempt to read the body from init (safe); avoid constructing/cloning Requests
25599
25615
  // If the caller passed a Request as input, we do not attempt to read its body here
25616
+ // eslint-disable-next-line
25600
25617
  const candidateBody = init === null || init === void 0 ? void 0 : init.body;
25601
25618
  if (!(0,_utils_type_utils__WEBPACK_IMPORTED_MODULE_0__.isNullish)(candidateBody)) {
25602
25619
  const requestBody = _tryReadFetchBody({
@@ -25788,169 +25805,6 @@ if (typeof XMLHttpRequest !== 'undefined') {
25788
25805
  }
25789
25806
 
25790
25807
 
25791
- /***/ }),
25792
-
25793
- /***/ "./src/rrweb/exporter.ts":
25794
- /*!*******************************!*\
25795
- !*** ./src/rrweb/exporter.ts ***!
25796
- \*******************************/
25797
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
25798
-
25799
- "use strict";
25800
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25801
- /* harmony export */ RrwebEventExporter: () => (/* binding */ RrwebEventExporter)
25802
- /* harmony export */ });
25803
- /* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-client */ "../../node_modules/socket.io-client/build/esm/index.js");
25804
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventBus */ "./src/eventBus.ts");
25805
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/messaging.service */ "./src/services/messaging.service.ts");
25806
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25807
-
25808
-
25809
-
25810
-
25811
- const MAX_RECONNECTION_ATTEMPTS = 2;
25812
- class RrwebEventExporter {
25813
- constructor(options) {
25814
- this.options = options;
25815
- this.socket = null;
25816
- this.queue = [];
25817
- this.isConnecting = false;
25818
- this.isConnected = false;
25819
- this.usePostMessage = false;
25820
- this.attempts = 0;
25821
- this.sessionId = null;
25822
- }
25823
- init() {
25824
- if (this.isConnecting || this.isConnected)
25825
- return;
25826
- this.attempts++;
25827
- this.isConnecting = true;
25828
- this.usePostMessage = false;
25829
- this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options.socketUrl, {
25830
- path: '/v0/radar/ws',
25831
- auth: {
25832
- 'x-api-key': this.options.apiKey,
25833
- },
25834
- reconnectionAttempts: 2,
25835
- transports: ['websocket'],
25836
- });
25837
- // this.socket.on('connect', () => {
25838
- // this.isConnecting = false
25839
- // this.isConnected = true
25840
- // this.usePostMessage = false
25841
- // this.flushQueue()
25842
- // })
25843
- this.socket.on('ready', () => {
25844
- this.isConnecting = false;
25845
- this.isConnected = true;
25846
- this.usePostMessage = false;
25847
- this.flushQueue();
25848
- });
25849
- this.socket.on('disconnect', (err) => {
25850
- this.isConnecting = false;
25851
- this.isConnected = false;
25852
- });
25853
- this.socket.on('connect_error', (err) => {
25854
- this.isConnecting = false;
25855
- this.isConnected = false;
25856
- this.checkReconnectionAttempts();
25857
- });
25858
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, (data) => {
25859
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, data);
25860
- this.unsubscribeFromSession();
25861
- });
25862
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, (data) => {
25863
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, data);
25864
- });
25865
- }
25866
- checkReconnectionAttempts() {
25867
- if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
25868
- this.usePostMessage = !!this.options.usePostMessageFallback;
25869
- this.flushQueue();
25870
- }
25871
- }
25872
- sendViaPostMessage(event) {
25873
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('rrweb-event', event);
25874
- }
25875
- flushQueue() {
25876
- var _a, _b;
25877
- while (this.queue.length > 0 && (this.usePostMessage || ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected))) {
25878
- const event = this.queue.shift();
25879
- if (!event)
25880
- continue;
25881
- if (this.usePostMessage) {
25882
- this.sendViaPostMessage(event.data);
25883
- }
25884
- else if ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.connected) {
25885
- this.socket.emit(event.name, event.data);
25886
- }
25887
- }
25888
- }
25889
- unsubscribeFromSession() {
25890
- var _a;
25891
- const payload = {
25892
- debugSessionId: this.sessionId,
25893
- };
25894
- if (this.usePostMessage) {
25895
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('socket-emit', { event: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, data: payload });
25896
- }
25897
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25898
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, payload);
25899
- }
25900
- }
25901
- send(event) {
25902
- var _a;
25903
- if (this.usePostMessage) {
25904
- this.sendViaPostMessage(event);
25905
- }
25906
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25907
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT, event);
25908
- }
25909
- else {
25910
- this.queue.push({ data: event, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT });
25911
- this.init();
25912
- }
25913
- }
25914
- subscribeToSession(session) {
25915
- var _a;
25916
- this.sessionId = session.shortId || session._id;
25917
- const payload = {
25918
- projectId: session.project,
25919
- workspaceId: session.workspace,
25920
- debugSessionId: this.sessionId,
25921
- sessionType: session.creationType,
25922
- };
25923
- if (this.usePostMessage) {
25924
- this.sendViaPostMessage({ type: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, ...payload });
25925
- }
25926
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25927
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, payload);
25928
- }
25929
- else {
25930
- this.queue.push({ data: payload, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT });
25931
- this.init();
25932
- }
25933
- }
25934
- close() {
25935
- var _a;
25936
- if (this.usePostMessage) {
25937
- this.sendViaPostMessage({ type: 'close' });
25938
- }
25939
- if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25940
- setTimeout(() => {
25941
- var _a;
25942
- this.unsubscribeFromSession();
25943
- this.attempts = 0;
25944
- this.isConnected = false;
25945
- this.isConnecting = false;
25946
- (_a = this.socket) === null || _a === void 0 ? void 0 : _a.disconnect();
25947
- this.socket = null;
25948
- }, 500);
25949
- }
25950
- }
25951
- }
25952
-
25953
-
25954
25808
  /***/ }),
25955
25809
 
25956
25810
  /***/ "./src/rrweb/index.ts":
@@ -25969,7 +25823,7 @@ class RrwebEventExporter {
25969
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");
25970
25824
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./src/utils/index.ts");
25971
25825
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25972
- /* 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");
25973
25827
 
25974
25828
 
25975
25829
 
@@ -26001,11 +25855,6 @@ class RecorderBrowserSDK {
26001
25855
  */
26002
25856
  init(config) {
26003
25857
  this.config = config;
26004
- this.exporter = new _exporter__WEBPACK_IMPORTED_MODULE_5__.RrwebEventExporter({
26005
- apiKey: config.apiKey,
26006
- socketUrl: config.apiBaseUrl || '',
26007
- usePostMessageFallback: Boolean(config.usePostMessageFallback),
26008
- });
26009
25858
  }
26010
25859
  /**
26011
25860
  * Starts recording events for a given session ID.
@@ -26051,7 +25900,7 @@ class RecorderBrowserSDK {
26051
25900
  this.stopFn = (0,rrweb__WEBPACK_IMPORTED_MODULE_6__.record)({
26052
25901
  ...options,
26053
25902
  emit: async (event) => {
26054
- if (this.exporter) {
25903
+ if (_services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService) {
26055
25904
  if (typeof maskingConfig.maskConsoleEvent === 'function' && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isConsoleEvent)(event)) {
26056
25905
  const { data } = event;
26057
25906
  const maskedPayload = maskingConfig.maskConsoleEvent(data.payload);
@@ -26059,7 +25908,7 @@ class RecorderBrowserSDK {
26059
25908
  }
26060
25909
  const packedEvent = (0,_rrweb_packer__WEBPACK_IMPORTED_MODULE_0__.pack)(event);
26061
25910
  this.stoppedAt = new Date(event.timestamp).toISOString();
26062
- this.exporter.send({
25911
+ _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService.send({
26063
25912
  event: packedEvent,
26064
25913
  eventType: event.type,
26065
25914
  timestamp: event.timestamp,
@@ -26100,12 +25949,13 @@ class RecorderBrowserSDK {
26100
25949
  stop() {
26101
25950
  var _a, _b;
26102
25951
  (_a = this.stopFn) === null || _a === void 0 ? void 0 : _a.call(this);
26103
- (_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
+ }
26104
25955
  this.clearRestartInterval();
26105
25956
  }
26106
25957
  subscribeToSession(session) {
26107
- var _a;
26108
- (_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);
26109
25959
  }
26110
25960
  }
26111
25961
 
@@ -26364,6 +26214,207 @@ const messagingService = new MessagingService();
26364
26214
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (messagingService);
26365
26215
 
26366
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
+
26367
26418
  /***/ }),
26368
26419
 
26369
26420
  /***/ "./src/sessionRecorder.ts":
@@ -26380,17 +26431,18 @@ const messagingService = new MessagingService();
26380
26431
  /* harmony import */ var _rrweb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rrweb */ "./src/rrweb/index.ts");
26381
26432
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils/index.ts");
26382
26433
  /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./src/types/index.ts");
26383
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ "./src/config/index.ts");
26384
- /* harmony import */ var _patch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./patch */ "./src/patch/index.ts");
26385
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./eventBus */ "./src/eventBus.ts");
26386
- /* harmony import */ var _sessionWidget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./sessionWidget */ "./src/sessionWidget/index.ts");
26387
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./services/messaging.service */ "./src/services/messaging.service.ts");
26388
- /* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./services/api.service */ "./src/services/api.service.ts");
26389
- /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./index.scss */ "./src/index.scss");
26390
- /* 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");
26391
- /* harmony import */ var _sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sessionWidget/buttonStateConfigs */ "./src/sessionWidget/buttonStateConfigs.ts");
26392
- /* harmony import */ var lib0_observable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lib0/observable */ "../../node_modules/lib0/observable.js");
26393
- /* 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");
26394
26446
 
26395
26447
 
26396
26448
 
@@ -26406,7 +26458,8 @@ const messagingService = new MessagingService();
26406
26458
 
26407
26459
 
26408
26460
 
26409
- class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Observable {
26461
+
26462
+ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_15__.Observable {
26410
26463
  get navigation() {
26411
26464
  return this._navigationRecorder.api;
26412
26465
  }
@@ -26418,20 +26471,20 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26418
26471
  }
26419
26472
  set sessionId(sessionId) {
26420
26473
  this._sessionId = sessionId;
26421
- (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);
26422
26475
  }
26423
26476
  get sessionType() {
26424
26477
  return this._sessionType;
26425
26478
  }
26426
26479
  set sessionType(sessionType) {
26427
26480
  this._sessionType = sessionType;
26428
- 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;
26429
26482
  this._sessionWidget.updateContinuousRecordingState(continuousRecording);
26430
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('continuous-debugging', continuousRecording);
26431
- (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);
26432
26485
  }
26433
26486
  get continuousRecording() {
26434
- 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;
26435
26488
  }
26436
26489
  get sessionState() {
26437
26490
  return this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
@@ -26439,8 +26492,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26439
26492
  set sessionState(state) {
26440
26493
  this._sessionState = state;
26441
26494
  this._sessionWidget.updateState(this._sessionState, this.continuousRecording);
26442
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('state-change', this._sessionState);
26443
- (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);
26444
26497
  // Emit observable event to support React wrapper
26445
26498
  this.emit('state-change', [this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped, this.sessionType]);
26446
26499
  }
@@ -26449,7 +26502,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26449
26502
  }
26450
26503
  set session(session) {
26451
26504
  this._session = session;
26452
- (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);
26453
26506
  }
26454
26507
  get sessionAttributes() {
26455
26508
  return this._sessionAttributes || {};
@@ -26481,16 +26534,17 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26481
26534
  constructor() {
26482
26535
  var _a;
26483
26536
  super();
26484
- this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_9__.ApiService();
26537
+ this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_10__.ApiService();
26485
26538
  this._tracer = new _otel__WEBPACK_IMPORTED_MODULE_0__.TracerBrowserSDK();
26486
26539
  this._recorder = new _rrweb__WEBPACK_IMPORTED_MODULE_1__.RecorderBrowserSDK();
26487
- this._sessionWidget = new _sessionWidget__WEBPACK_IMPORTED_MODULE_7__.SessionWidget();
26488
- 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;
26489
26543
  this._startRequestController = null;
26490
26544
  this._isInitialized = false;
26491
26545
  // Session ID and state are stored in localStorage
26492
26546
  this._sessionId = null;
26493
- 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;
26494
26548
  this._sessionState = null;
26495
26549
  this._session = null;
26496
26550
  this._sessionAttributes = null;
@@ -26500,10 +26554,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26500
26554
  this._error = '';
26501
26555
  // Safety: avoid accessing storage in SSR/non-browser environments
26502
26556
  const isBrowser = typeof window !== 'undefined';
26503
- const sessionLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_PROP_NAME, true) : null;
26504
- const sessionIdLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_ID_PROP_NAME) : null;
26505
- const sessionStateLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STATE_PROP_NAME) : null;
26506
- 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;
26507
26561
  if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isSessionActive)(sessionLocal, sessionTypeLocal)) {
26508
26562
  this.session = sessionLocal;
26509
26563
  this.sessionId = sessionIdLocal;
@@ -26514,10 +26568,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26514
26568
  this.session = null;
26515
26569
  this.sessionId = null;
26516
26570
  this.sessionState = null;
26517
- 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;
26518
26572
  }
26519
26573
  this._configs = {
26520
- ..._config__WEBPACK_IMPORTED_MODULE_4__.BASE_CONFIG,
26574
+ ..._config__WEBPACK_IMPORTED_MODULE_5__.BASE_CONFIG,
26521
26575
  apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || '',
26522
26576
  };
26523
26577
  }
@@ -26529,11 +26583,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26529
26583
  if (typeof window === 'undefined') {
26530
26584
  return;
26531
26585
  }
26532
- 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 });
26533
26587
  this._isInitialized = true;
26534
26588
  this._checkOperation('init');
26535
- (0,_patch__WEBPACK_IMPORTED_MODULE_5__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
26536
- (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);
26537
26591
  this._tracer.init(this._configs);
26538
26592
  this._apiService.init(this._configs);
26539
26593
  this._sessionWidget.init(this._configs);
@@ -26543,16 +26597,26 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26543
26597
  environment: this._configs.environment,
26544
26598
  version: this._configs.version,
26545
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
+ });
26546
26606
  if (this._configs.apiKey) {
26547
26607
  this._recorder.init(this._configs);
26548
26608
  }
26549
- 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)) {
26550
26612
  this._start();
26551
26613
  }
26552
26614
  this._registerWidgetEvents();
26553
26615
  this._registerSessionLimitReach();
26554
26616
  this._registerSessionAutoCreation();
26555
- _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);
26556
26620
  // Emit init observable event
26557
26621
  this.emit('init', [this]);
26558
26622
  }
@@ -26565,7 +26629,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26565
26629
  if (!this.continuousRecording || !this._configs.showContinuousRecording) {
26566
26630
  return;
26567
26631
  }
26568
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVING);
26632
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVING);
26569
26633
  const res = await this._apiService.saveContinuousDebugSession(this.sessionId, {
26570
26634
  sessionAttributes: this.sessionAttributes,
26571
26635
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
@@ -26574,7 +26638,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26574
26638
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
26575
26639
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
26576
26640
  });
26577
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVED);
26641
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVED);
26578
26642
  const sessionUrl = res === null || res === void 0 ? void 0 : res.url;
26579
26643
  this._sessionWidget.showToast({
26580
26644
  type: 'success',
@@ -26587,11 +26651,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26587
26651
  }
26588
26652
  catch (error) {
26589
26653
  this.error = error.message;
26590
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.ERROR);
26654
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.ERROR);
26591
26655
  }
26592
26656
  finally {
26593
26657
  setTimeout(() => {
26594
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.IDLE);
26658
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.IDLE);
26595
26659
  }, 3000);
26596
26660
  }
26597
26661
  }
@@ -26600,11 +26664,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26600
26664
  * @param type - the type of session to start
26601
26665
  * @param session - the session to start
26602
26666
  */
26603
- 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) {
26604
26668
  this._checkOperation('start');
26605
26669
  // If continuous recording is disabled, force plain mode
26606
- if (type === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS && !this._configs.showContinuousRecording) {
26607
- 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;
26608
26672
  }
26609
26673
  this.sessionType = type;
26610
26674
  this._startRequestController = new AbortController();
@@ -26625,7 +26689,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26625
26689
  this._stop();
26626
26690
  if (this.continuousRecording) {
26627
26691
  await this._apiService.stopContinuousDebugSession(this.sessionId);
26628
- 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;
26629
26693
  }
26630
26694
  else {
26631
26695
  const request = {
@@ -26633,7 +26697,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26633
26697
  stoppedAt: this._recorder.stoppedAt,
26634
26698
  };
26635
26699
  const response = await this._apiService.stopSession(this.sessionId, request);
26636
- _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);
26637
26701
  }
26638
26702
  this._clearSession();
26639
26703
  }
@@ -26674,7 +26738,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26674
26738
  this._stop();
26675
26739
  if (this.continuousRecording) {
26676
26740
  await this._apiService.stopContinuousDebugSession(this.sessionId);
26677
- 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;
26678
26742
  }
26679
26743
  else {
26680
26744
  await this._apiService.cancelSession(this.sessionId);
@@ -26698,7 +26762,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26698
26762
  * The function receives the click event as its parameter and
26699
26763
  * should return `false` to prevent the default button action,
26700
26764
  * or `true` (or nothing) to allow it.
26701
- */
26765
+ */
26702
26766
  set recordingButtonClickHandler(handler) {
26703
26767
  this._sessionWidget.buttonClickExternalHandler = handler;
26704
26768
  }
@@ -26734,11 +26798,12 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26734
26798
  ...(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
26735
26799
  ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {}),
26736
26800
  },
26801
+ userAttributes: this._userAttributes
26737
26802
  };
26738
26803
  const { state } = await this._apiService.checkRemoteSession(payload);
26739
26804
  if (state == 'START') {
26740
26805
  if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started) {
26741
- 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);
26742
26807
  }
26743
26808
  }
26744
26809
  else if (state == 'STOP') {
@@ -26787,7 +26852,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26787
26852
  }
26788
26853
  _handleStart() {
26789
26854
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
26790
- 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);
26791
26856
  }
26792
26857
  }
26793
26858
  _handleStop(comment) {
@@ -26817,14 +26882,14 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26817
26882
  }
26818
26883
  _handleContinuousDebugging() {
26819
26884
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
26820
- 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);
26821
26886
  }
26822
26887
  }
26823
26888
  /**
26824
26889
  * Register session limit reaching listeners for controlling session end
26825
26890
  */
26826
26891
  _registerSessionLimitReach() {
26827
- _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, () => {
26828
26893
  this._stop();
26829
26894
  this._clearSession();
26830
26895
  this._sessionWidget.handleUIReseting();
@@ -26834,7 +26899,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26834
26899
  * Register session auto creation listeners during continuous recording
26835
26900
  */
26836
26901
  _registerSessionAutoCreation() {
26837
- _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) => {
26838
26903
  var _a;
26839
26904
  if (!(payload === null || payload === void 0 ? void 0 : payload.data))
26840
26905
  return;
@@ -26848,6 +26913,18 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26848
26913
  }, 5000);
26849
26914
  });
26850
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
+ }
26851
26928
  /**
26852
26929
  * Create a new session and start it
26853
26930
  */
@@ -26858,6 +26935,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26858
26935
  const payload = {
26859
26936
  sessionAttributes: this.sessionAttributes,
26860
26937
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
26938
+ userAttributes: this._userAttributes,
26861
26939
  name: this.sessionAttributes.userName
26862
26940
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
26863
26941
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
@@ -26869,8 +26947,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26869
26947
  : await this._apiService.startSession(request, signal);
26870
26948
  if (session) {
26871
26949
  session.sessionType = this.continuousRecording
26872
- ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS
26873
- : _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;
26874
26952
  this._setupSessionAndStart(session, false);
26875
26953
  }
26876
26954
  }
@@ -26878,7 +26956,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26878
26956
  this.error = error.message;
26879
26957
  this.sessionState = _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
26880
26958
  if (this.continuousRecording) {
26881
- 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;
26882
26960
  }
26883
26961
  }
26884
26962
  }
@@ -26893,7 +26971,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26893
26971
  this._recorder.start(this.sessionId, this.sessionType);
26894
26972
  this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType, });
26895
26973
  if (this.session) {
26896
- _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);
26897
26975
  this._recorder.subscribeToSession(this.session);
26898
26976
  this._sessionWidget.seconds = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getTimeDifferenceInSeconds)((_a = this.session) === null || _a === void 0 ? void 0 : _a.startedAt);
26899
26977
  }
@@ -27019,6 +27097,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
27019
27097
  return { errorInfo: String(errorInfo) };
27020
27098
  }
27021
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
+ }
27022
27104
  }
27023
27105
 
27024
27106
 
@@ -28357,6 +28439,26 @@ const getButtonTemplate = (button) => {
28357
28439
  };
28358
28440
 
28359
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
+
28360
28462
  /***/ }),
28361
28463
 
28362
28464
  /***/ "./src/types/index.ts":
@@ -28369,11 +28471,14 @@ const getButtonTemplate = (button) => {
28369
28471
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28370
28472
  /* harmony export */ DebugSessionDataType: () => (/* reexport safe */ _session__WEBPACK_IMPORTED_MODULE_1__.DebugSessionDataType),
28371
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),
28372
28475
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__.WidgetButtonPlacement)
28373
28476
  /* harmony export */ });
28374
28477
  /* harmony import */ var _widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./widget */ "./src/types/widget.ts");
28375
28478
  /* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./session */ "./src/types/session.ts");
28376
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
+
28377
28482
 
28378
28483
 
28379
28484
 
@@ -48386,6 +48491,7 @@ __webpack_require__.r(__webpack_exports__);
48386
48491
  /* harmony export */ SessionRecorderTraceIdRatioBasedSampler: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_6__.SessionRecorderTraceIdRatioBasedSampler),
48387
48492
  /* harmony export */ SessionState: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.SessionState),
48388
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),
48389
48495
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.WidgetButtonPlacement),
48390
48496
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
48391
48497
  /* harmony export */ recorderEventBus: () => (/* reexport safe */ _eventBus__WEBPACK_IMPORTED_MODULE_2__.recorderEventBus)