@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.js CHANGED
@@ -24114,6 +24114,8 @@ module.exports = {
24114
24114
  /* harmony export */ OTEL_IGNORE_URLS: () => (/* binding */ OTEL_IGNORE_URLS),
24115
24115
  /* harmony export */ OTEL_MP_SAMPLE_TRACE_RATIO: () => (/* binding */ OTEL_MP_SAMPLE_TRACE_RATIO),
24116
24116
  /* harmony export */ PACKAGE_VERSION_EXPORT: () => (/* binding */ PACKAGE_VERSION_EXPORT),
24117
+ /* harmony export */ REMOTE_SESSION_RECORDING_START: () => (/* binding */ REMOTE_SESSION_RECORDING_START),
24118
+ /* harmony export */ REMOTE_SESSION_RECORDING_STOP: () => (/* binding */ REMOTE_SESSION_RECORDING_STOP),
24117
24119
  /* harmony export */ SESSION_ADD_EVENT: () => (/* binding */ SESSION_ADD_EVENT),
24118
24120
  /* harmony export */ SESSION_AUTO_CREATED: () => (/* binding */ SESSION_AUTO_CREATED),
24119
24121
  /* harmony export */ SESSION_ID_PROP_NAME: () => (/* binding */ SESSION_ID_PROP_NAME),
@@ -24124,7 +24126,8 @@ module.exports = {
24124
24126
  /* harmony export */ SESSION_STOPPED_EVENT: () => (/* binding */ SESSION_STOPPED_EVENT),
24125
24127
  /* harmony export */ SESSION_SUBSCRIBE_EVENT: () => (/* binding */ SESSION_SUBSCRIBE_EVENT),
24126
24128
  /* harmony export */ SESSION_TYPE_PROP_NAME: () => (/* binding */ SESSION_TYPE_PROP_NAME),
24127
- /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* binding */ SESSION_UNSUBSCRIBE_EVENT)
24129
+ /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* binding */ SESSION_UNSUBSCRIBE_EVENT),
24130
+ /* harmony export */ SOCKET_SET_USER_EVENT: () => (/* binding */ SOCKET_SET_USER_EVENT)
24128
24131
  /* harmony export */ });
24129
24132
  /* unused harmony export SESSION_SHORT_ID_PROP_NAME */
24130
24133
  const OTEL_MP_SAMPLE_TRACE_RATIO = 0.15;
@@ -24139,11 +24142,14 @@ const SESSION_SUBSCRIBE_EVENT = 'debug-session:subscribe';
24139
24142
  const SESSION_UNSUBSCRIBE_EVENT = 'debug-session:unsubscribe';
24140
24143
  const SESSION_AUTO_CREATED = 'debug-session:auto-created';
24141
24144
  const SESSION_ADD_EVENT = 'debug-session:rrweb:add-event';
24145
+ const SOCKET_SET_USER_EVENT = 'socket:set-user';
24142
24146
  const DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE = 100000;
24143
24147
  const SESSION_RESPONSE = 'multiplayer-debug-session-response';
24144
24148
  const CONTINUOUS_DEBUGGING_TIMEOUT = 60000; // 1 minutes
24145
24149
  const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30; // TODO: move to shared config otel core
24146
- const PACKAGE_VERSION_EXPORT = "1.2.37" || 0;
24150
+ const REMOTE_SESSION_RECORDING_START = 'remote-session-recording:start';
24151
+ const REMOTE_SESSION_RECORDING_STOP = 'remote-session-recording:stop';
24152
+ const PACKAGE_VERSION_EXPORT = "1.3.0" || 0;
24147
24153
  // Regex patterns for OpenTelemetry ignore URLs
24148
24154
  const OTEL_IGNORE_URLS = [
24149
24155
  // Traces endpoint
@@ -24237,6 +24243,7 @@ const BASE_CONFIG = {
24237
24243
  captureHeaders: true,
24238
24244
  masking: DEFAULT_MASKING_CONFIG,
24239
24245
  widgetTextOverrides: DEFAULT_WIDGET_TEXT_CONFIG,
24246
+ useWebsocket: true,
24240
24247
  };
24241
24248
 
24242
24249
 
@@ -24254,6 +24261,8 @@ const BASE_CONFIG = {
24254
24261
  /* harmony export */ DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE),
24255
24262
  /* harmony export */ DEFAULT_WIDGET_TEXT_CONFIG: () => (/* reexport safe */ _defaults__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_WIDGET_TEXT_CONFIG),
24256
24263
  /* harmony export */ OTEL_IGNORE_URLS: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.OTEL_IGNORE_URLS),
24264
+ /* harmony export */ REMOTE_SESSION_RECORDING_START: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.REMOTE_SESSION_RECORDING_START),
24265
+ /* harmony export */ REMOTE_SESSION_RECORDING_STOP: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.REMOTE_SESSION_RECORDING_STOP),
24257
24266
  /* harmony export */ SESSION_ADD_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_ADD_EVENT),
24258
24267
  /* harmony export */ SESSION_AUTO_CREATED: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_AUTO_CREATED),
24259
24268
  /* harmony export */ SESSION_ID_PROP_NAME: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_ID_PROP_NAME),
@@ -24265,6 +24274,7 @@ const BASE_CONFIG = {
24265
24274
  /* harmony export */ SESSION_SUBSCRIBE_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_SUBSCRIBE_EVENT),
24266
24275
  /* harmony export */ SESSION_TYPE_PROP_NAME: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_TYPE_PROP_NAME),
24267
24276
  /* harmony export */ SESSION_UNSUBSCRIBE_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SESSION_UNSUBSCRIBE_EVENT),
24277
+ /* harmony export */ SOCKET_SET_USER_EVENT: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SOCKET_SET_USER_EVENT),
24268
24278
  /* harmony export */ getSessionRecorderConfig: () => (/* reexport safe */ _session_recorder__WEBPACK_IMPORTED_MODULE_4__.getSessionRecorderConfig)
24269
24279
  /* harmony export */ });
24270
24280
  /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "./src/config/constants.ts");
@@ -24372,6 +24382,7 @@ const getWidgetTextOverridesConfig = (config, defaultConfig) => {
24372
24382
  };
24373
24383
  };
24374
24384
  const getSessionRecorderConfig = (c) => {
24385
+ var _a;
24375
24386
  if (!c) {
24376
24387
  return _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG;
24377
24388
  }
@@ -24397,6 +24408,7 @@ const getSessionRecorderConfig = (c) => {
24397
24408
  captureHeaders: (0,_validators__WEBPACK_IMPORTED_MODULE_3__.isValidBoolean)(c.captureHeaders, _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG.captureHeaders),
24398
24409
  masking: (0,_masking__WEBPACK_IMPORTED_MODULE_2__.getMaskingConfig)(c.masking),
24399
24410
  widgetTextOverrides: getWidgetTextOverridesConfig(c.widgetTextOverrides, _defaults__WEBPACK_IMPORTED_MODULE_1__.BASE_CONFIG.widgetTextOverrides),
24411
+ 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),
24400
24412
  };
24401
24413
  };
24402
24414
 
@@ -25193,6 +25205,7 @@ class TracerBrowserSDK {
25193
25205
  });
25194
25206
  return;
25195
25207
  }
25208
+ // eslint-disable-next-line
25196
25209
  }
25197
25210
  catch (_ignored) { }
25198
25211
  // Fallback: create a short-lived span to hold the exception details
@@ -25208,6 +25221,7 @@ class TracerBrowserSDK {
25208
25221
  ...(errorInfo || {}),
25209
25222
  });
25210
25223
  span.end();
25224
+ // eslint-disable-next-line
25211
25225
  }
25212
25226
  catch (_ignored) { }
25213
25227
  }
@@ -25229,12 +25243,14 @@ class TracerBrowserSDK {
25229
25243
  return;
25230
25244
  if (typeof window === 'undefined')
25231
25245
  return;
25246
+ // eslint-disable-next-line
25232
25247
  const errorHandler = (event) => {
25233
25248
  const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error
25234
25249
  ? event.error
25235
25250
  : new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
25236
25251
  this.captureException(err);
25237
25252
  };
25253
+ // eslint-disable-next-line
25238
25254
  const rejectionHandler = (event) => {
25239
25255
  const reason = (event && 'reason' in event) ? event.reason : undefined;
25240
25256
  const err = reason instanceof Error
@@ -25409,6 +25425,7 @@ if (typeof window !== 'undefined' && typeof window.fetch !== 'undefined') {
25409
25425
  : (typeof input === 'string' || input instanceof URL ? String(input) : '');
25410
25426
  // Only attempt to read the body from init (safe); avoid constructing/cloning Requests
25411
25427
  // If the caller passed a Request as input, we do not attempt to read its body here
25428
+ // eslint-disable-next-line
25412
25429
  const candidateBody = init === null || init === void 0 ? void 0 : init.body;
25413
25430
  if (!(0,_utils_type_utils__WEBPACK_IMPORTED_MODULE_0__.isNullish)(candidateBody)) {
25414
25431
  const requestBody = _tryReadFetchBody({
@@ -25598,168 +25615,6 @@ if (typeof XMLHttpRequest !== 'undefined') {
25598
25615
  }
25599
25616
 
25600
25617
 
25601
- /***/ }),
25602
-
25603
- /***/ "./src/rrweb/exporter.ts":
25604
- /*!*******************************!*\
25605
- !*** ./src/rrweb/exporter.ts ***!
25606
- \*******************************/
25607
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
25608
-
25609
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25610
- /* harmony export */ RrwebEventExporter: () => (/* binding */ RrwebEventExporter)
25611
- /* harmony export */ });
25612
- /* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-client */ "../../node_modules/socket.io-client/build/esm/index.js");
25613
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventBus */ "./src/eventBus.ts");
25614
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/messaging.service */ "./src/services/messaging.service.ts");
25615
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25616
-
25617
-
25618
-
25619
-
25620
- const MAX_RECONNECTION_ATTEMPTS = 2;
25621
- class RrwebEventExporter {
25622
- constructor(options) {
25623
- this.options = options;
25624
- this.socket = null;
25625
- this.queue = [];
25626
- this.isConnecting = false;
25627
- this.isConnected = false;
25628
- this.usePostMessage = false;
25629
- this.attempts = 0;
25630
- this.sessionId = null;
25631
- }
25632
- init() {
25633
- if (this.isConnecting || this.isConnected)
25634
- return;
25635
- this.attempts++;
25636
- this.isConnecting = true;
25637
- this.usePostMessage = false;
25638
- this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options.socketUrl, {
25639
- path: '/v0/radar/ws',
25640
- auth: {
25641
- 'x-api-key': this.options.apiKey,
25642
- },
25643
- reconnectionAttempts: 2,
25644
- transports: ['websocket'],
25645
- });
25646
- // this.socket.on('connect', () => {
25647
- // this.isConnecting = false
25648
- // this.isConnected = true
25649
- // this.usePostMessage = false
25650
- // this.flushQueue()
25651
- // })
25652
- this.socket.on('ready', () => {
25653
- this.isConnecting = false;
25654
- this.isConnected = true;
25655
- this.usePostMessage = false;
25656
- this.flushQueue();
25657
- });
25658
- this.socket.on('disconnect', (err) => {
25659
- this.isConnecting = false;
25660
- this.isConnected = false;
25661
- });
25662
- this.socket.on('connect_error', (err) => {
25663
- this.isConnecting = false;
25664
- this.isConnected = false;
25665
- this.checkReconnectionAttempts();
25666
- });
25667
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, (data) => {
25668
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, data);
25669
- this.unsubscribeFromSession();
25670
- });
25671
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, (data) => {
25672
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, data);
25673
- });
25674
- }
25675
- checkReconnectionAttempts() {
25676
- if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
25677
- this.usePostMessage = !!this.options.usePostMessageFallback;
25678
- this.flushQueue();
25679
- }
25680
- }
25681
- sendViaPostMessage(event) {
25682
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('rrweb-event', event);
25683
- }
25684
- flushQueue() {
25685
- var _a, _b;
25686
- while (this.queue.length > 0 && (this.usePostMessage || ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected))) {
25687
- const event = this.queue.shift();
25688
- if (!event)
25689
- continue;
25690
- if (this.usePostMessage) {
25691
- this.sendViaPostMessage(event.data);
25692
- }
25693
- else if ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.connected) {
25694
- this.socket.emit(event.name, event.data);
25695
- }
25696
- }
25697
- }
25698
- unsubscribeFromSession() {
25699
- var _a;
25700
- const payload = {
25701
- debugSessionId: this.sessionId,
25702
- };
25703
- if (this.usePostMessage) {
25704
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('socket-emit', { event: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, data: payload });
25705
- }
25706
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25707
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, payload);
25708
- }
25709
- }
25710
- send(event) {
25711
- var _a;
25712
- if (this.usePostMessage) {
25713
- this.sendViaPostMessage(event);
25714
- }
25715
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25716
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT, event);
25717
- }
25718
- else {
25719
- this.queue.push({ data: event, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT });
25720
- this.init();
25721
- }
25722
- }
25723
- subscribeToSession(session) {
25724
- var _a;
25725
- this.sessionId = session.shortId || session._id;
25726
- const payload = {
25727
- projectId: session.project,
25728
- workspaceId: session.workspace,
25729
- debugSessionId: this.sessionId,
25730
- sessionType: session.creationType,
25731
- };
25732
- if (this.usePostMessage) {
25733
- this.sendViaPostMessage({ type: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, ...payload });
25734
- }
25735
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25736
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, payload);
25737
- }
25738
- else {
25739
- this.queue.push({ data: payload, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT });
25740
- this.init();
25741
- }
25742
- }
25743
- close() {
25744
- var _a;
25745
- if (this.usePostMessage) {
25746
- this.sendViaPostMessage({ type: 'close' });
25747
- }
25748
- if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25749
- setTimeout(() => {
25750
- var _a;
25751
- this.unsubscribeFromSession();
25752
- this.attempts = 0;
25753
- this.isConnected = false;
25754
- this.isConnecting = false;
25755
- (_a = this.socket) === null || _a === void 0 ? void 0 : _a.disconnect();
25756
- this.socket = null;
25757
- }, 500);
25758
- }
25759
- }
25760
- }
25761
-
25762
-
25763
25618
  /***/ }),
25764
25619
 
25765
25620
  /***/ "./src/rrweb/index.ts":
@@ -25777,7 +25632,7 @@ class RrwebEventExporter {
25777
25632
  /* 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");
25778
25633
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./src/utils/index.ts");
25779
25634
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25780
- /* harmony import */ var _exporter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./exporter */ "./src/rrweb/exporter.ts");
25635
+ /* harmony import */ var _services_socket_service__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../services/socket.service */ "./src/services/socket.service.ts");
25781
25636
 
25782
25637
 
25783
25638
 
@@ -25809,11 +25664,6 @@ class RecorderBrowserSDK {
25809
25664
  */
25810
25665
  init(config) {
25811
25666
  this.config = config;
25812
- this.exporter = new _exporter__WEBPACK_IMPORTED_MODULE_5__.RrwebEventExporter({
25813
- apiKey: config.apiKey,
25814
- socketUrl: config.apiBaseUrl || '',
25815
- usePostMessageFallback: Boolean(config.usePostMessageFallback),
25816
- });
25817
25667
  }
25818
25668
  /**
25819
25669
  * Starts recording events for a given session ID.
@@ -25859,7 +25709,7 @@ class RecorderBrowserSDK {
25859
25709
  this.stopFn = (0,rrweb__WEBPACK_IMPORTED_MODULE_6__.record)({
25860
25710
  ...options,
25861
25711
  emit: async (event) => {
25862
- if (this.exporter) {
25712
+ if (_services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService) {
25863
25713
  if (typeof maskingConfig.maskConsoleEvent === 'function' && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isConsoleEvent)(event)) {
25864
25714
  const { data } = event;
25865
25715
  const maskedPayload = maskingConfig.maskConsoleEvent(data.payload);
@@ -25867,7 +25717,7 @@ class RecorderBrowserSDK {
25867
25717
  }
25868
25718
  const packedEvent = (0,_rrweb_packer__WEBPACK_IMPORTED_MODULE_0__.pack)(event);
25869
25719
  this.stoppedAt = new Date(event.timestamp).toISOString();
25870
- this.exporter.send({
25720
+ _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService.send({
25871
25721
  event: packedEvent,
25872
25722
  eventType: event.type,
25873
25723
  timestamp: event.timestamp,
@@ -25908,12 +25758,13 @@ class RecorderBrowserSDK {
25908
25758
  stop() {
25909
25759
  var _a, _b;
25910
25760
  (_a = this.stopFn) === null || _a === void 0 ? void 0 : _a.call(this);
25911
- (_b = this.exporter) === null || _b === void 0 ? void 0 : _b.close();
25761
+ if (!((_b = this.config) === null || _b === void 0 ? void 0 : _b.useWebsocket)) {
25762
+ _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();
25763
+ }
25912
25764
  this.clearRestartInterval();
25913
25765
  }
25914
25766
  subscribeToSession(session) {
25915
- var _a;
25916
- (_a = this.exporter) === null || _a === void 0 ? void 0 : _a.subscribeToSession(session);
25767
+ _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);
25917
25768
  }
25918
25769
  }
25919
25770
 
@@ -26170,6 +26021,206 @@ const messagingService = new MessagingService();
26170
26021
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (messagingService);
26171
26022
 
26172
26023
 
26024
+ /***/ }),
26025
+
26026
+ /***/ "./src/services/socket.service.ts":
26027
+ /*!****************************************!*\
26028
+ !*** ./src/services/socket.service.ts ***!
26029
+ \****************************************/
26030
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
26031
+
26032
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26033
+ /* harmony export */ createSocketService: () => (/* binding */ createSocketService),
26034
+ /* harmony export */ socketService: () => (/* binding */ socketService)
26035
+ /* harmony export */ });
26036
+ /* unused harmony export SocketService */
26037
+ /* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-client */ "../../node_modules/socket.io-client/build/esm/index.js");
26038
+ /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventBus */ "./src/eventBus.ts");
26039
+ /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/messaging.service */ "./src/services/messaging.service.ts");
26040
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
26041
+
26042
+
26043
+
26044
+
26045
+ const MAX_RECONNECTION_ATTEMPTS = 2;
26046
+ class SocketService {
26047
+ constructor(options) {
26048
+ this.options = options;
26049
+ this.socket = null;
26050
+ this.queue = [];
26051
+ this.isConnecting = false;
26052
+ this.isConnected = false;
26053
+ this.usePostMessage = false;
26054
+ this.attempts = 0;
26055
+ this.sessionId = null;
26056
+ if (this.options.keepAlive
26057
+ && this.options.socketUrl
26058
+ && this.options.apiKey) {
26059
+ this.init();
26060
+ }
26061
+ }
26062
+ init() {
26063
+ if (this.isConnecting || this.isConnected)
26064
+ return;
26065
+ this.attempts++;
26066
+ this.isConnecting = true;
26067
+ this.usePostMessage = false;
26068
+ this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options.socketUrl, {
26069
+ path: '/v0/radar/ws',
26070
+ auth: {
26071
+ 'x-api-key': this.options.apiKey,
26072
+ },
26073
+ reconnectionAttempts: 2,
26074
+ transports: ['websocket'],
26075
+ });
26076
+ // this.socket.on('connect', () => {
26077
+ // this.isConnecting = false
26078
+ // this.isConnected = true
26079
+ // this.usePostMessage = false
26080
+ // this.flushQueue()
26081
+ // })
26082
+ this.socket.on('ready', () => {
26083
+ this.isConnecting = false;
26084
+ this.isConnected = true;
26085
+ this.usePostMessage = false;
26086
+ this.flushQueue();
26087
+ });
26088
+ this.socket.on('disconnect', (err) => {
26089
+ this.isConnecting = false;
26090
+ this.isConnected = false;
26091
+ });
26092
+ this.socket.on('connect_error', (err) => {
26093
+ this.isConnecting = false;
26094
+ this.isConnected = false;
26095
+ this.checkReconnectionAttempts();
26096
+ });
26097
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, (data) => {
26098
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, data);
26099
+ this.unsubscribeFromSession();
26100
+ });
26101
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, (data) => {
26102
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, data);
26103
+ });
26104
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_START, (data) => {
26105
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_START, data);
26106
+ });
26107
+ this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_STOP, (data) => {
26108
+ _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.REMOTE_SESSION_RECORDING_STOP, data);
26109
+ });
26110
+ }
26111
+ checkReconnectionAttempts() {
26112
+ if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
26113
+ this.usePostMessage = !!this.options.usePostMessageFallback;
26114
+ this.flushQueue();
26115
+ }
26116
+ }
26117
+ sendViaPostMessage(event) {
26118
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('rrweb-event', event);
26119
+ }
26120
+ flushQueue() {
26121
+ var _a, _b;
26122
+ while (this.queue.length > 0 && (this.usePostMessage || ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected))) {
26123
+ const event = this.queue.shift();
26124
+ if (!event)
26125
+ continue;
26126
+ if (this.usePostMessage) {
26127
+ this.sendViaPostMessage(event.data);
26128
+ }
26129
+ else if ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.connected) {
26130
+ this.socket.emit(event.name, event.data);
26131
+ }
26132
+ }
26133
+ }
26134
+ unsubscribeFromSession() {
26135
+ var _a;
26136
+ const payload = {
26137
+ debugSessionId: this.sessionId,
26138
+ };
26139
+ if (this.usePostMessage) {
26140
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('socket-emit', { event: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, data: payload });
26141
+ }
26142
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26143
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, payload);
26144
+ }
26145
+ }
26146
+ send(event) {
26147
+ var _a;
26148
+ if (this.usePostMessage) {
26149
+ this.sendViaPostMessage(event);
26150
+ }
26151
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26152
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT, event);
26153
+ }
26154
+ else {
26155
+ this.queue.push({ data: event, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT });
26156
+ this.init();
26157
+ }
26158
+ }
26159
+ subscribeToSession(session) {
26160
+ var _a;
26161
+ this.sessionId = session.shortId || session._id;
26162
+ const payload = {
26163
+ projectId: session.project,
26164
+ workspaceId: session.workspace,
26165
+ debugSessionId: this.sessionId,
26166
+ sessionType: session.creationType,
26167
+ };
26168
+ if (this.usePostMessage) {
26169
+ this.sendViaPostMessage({
26170
+ type: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT,
26171
+ ...payload,
26172
+ });
26173
+ }
26174
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26175
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, payload);
26176
+ }
26177
+ else {
26178
+ this.queue.push({
26179
+ data: payload,
26180
+ name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT,
26181
+ });
26182
+ this.init();
26183
+ }
26184
+ }
26185
+ setUser(userAttributes) {
26186
+ var _a;
26187
+ if (this.usePostMessage) {
26188
+ this.sendViaPostMessage({
26189
+ type: _config__WEBPACK_IMPORTED_MODULE_3__.SOCKET_SET_USER_EVENT,
26190
+ data: userAttributes,
26191
+ });
26192
+ }
26193
+ else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26194
+ this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SOCKET_SET_USER_EVENT, userAttributes);
26195
+ }
26196
+ }
26197
+ close() {
26198
+ var _a;
26199
+ if (this.usePostMessage) {
26200
+ this.sendViaPostMessage({ type: 'close' });
26201
+ }
26202
+ if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
26203
+ setTimeout(() => {
26204
+ var _a;
26205
+ this.unsubscribeFromSession();
26206
+ this.attempts = 0;
26207
+ this.isConnected = false;
26208
+ this.isConnecting = false;
26209
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.disconnect();
26210
+ this.socket = null;
26211
+ }, 500);
26212
+ }
26213
+ }
26214
+ }
26215
+ let socketService = null;
26216
+ const createSocketService = (options) => {
26217
+ if (!socketService) {
26218
+ socketService = new SocketService(options);
26219
+ }
26220
+ return socketService;
26221
+ };
26222
+
26223
+
26173
26224
  /***/ }),
26174
26225
 
26175
26226
  /***/ "./src/sessionRecorder.ts":
@@ -26185,17 +26236,18 @@ const messagingService = new MessagingService();
26185
26236
  /* harmony import */ var _rrweb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rrweb */ "./src/rrweb/index.ts");
26186
26237
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils/index.ts");
26187
26238
  /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./src/types/index.ts");
26188
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ "./src/config/index.ts");
26189
- /* harmony import */ var _patch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./patch */ "./src/patch/index.ts");
26190
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./eventBus */ "./src/eventBus.ts");
26191
- /* harmony import */ var _sessionWidget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./sessionWidget */ "./src/sessionWidget/index.ts");
26192
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./services/messaging.service */ "./src/services/messaging.service.ts");
26193
- /* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./services/api.service */ "./src/services/api.service.ts");
26194
- /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./index.scss */ "./src/index.scss");
26195
- /* 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");
26196
- /* harmony import */ var _sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sessionWidget/buttonStateConfigs */ "./src/sessionWidget/buttonStateConfigs.ts");
26197
- /* harmony import */ var lib0_observable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lib0/observable */ "../../node_modules/lib0/observable.js");
26198
- /* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./navigation */ "./src/navigation/index.ts");
26239
+ /* harmony import */ var _services_socket_service__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./services/socket.service */ "./src/services/socket.service.ts");
26240
+ /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config */ "./src/config/index.ts");
26241
+ /* harmony import */ var _patch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./patch */ "./src/patch/index.ts");
26242
+ /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./eventBus */ "./src/eventBus.ts");
26243
+ /* harmony import */ var _sessionWidget__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./sessionWidget */ "./src/sessionWidget/index.ts");
26244
+ /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./services/messaging.service */ "./src/services/messaging.service.ts");
26245
+ /* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./services/api.service */ "./src/services/api.service.ts");
26246
+ /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./index.scss */ "./src/index.scss");
26247
+ /* 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");
26248
+ /* harmony import */ var _sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./sessionWidget/buttonStateConfigs */ "./src/sessionWidget/buttonStateConfigs.ts");
26249
+ /* harmony import */ var lib0_observable__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! lib0/observable */ "../../node_modules/lib0/observable.js");
26250
+ /* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./navigation */ "./src/navigation/index.ts");
26199
26251
 
26200
26252
 
26201
26253
 
@@ -26211,7 +26263,8 @@ const messagingService = new MessagingService();
26211
26263
 
26212
26264
 
26213
26265
 
26214
- class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Observable {
26266
+
26267
+ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_15__.Observable {
26215
26268
  get navigation() {
26216
26269
  return this._navigationRecorder.api;
26217
26270
  }
@@ -26223,20 +26276,20 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26223
26276
  }
26224
26277
  set sessionId(sessionId) {
26225
26278
  this._sessionId = sessionId;
26226
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_ID_PROP_NAME, sessionId);
26279
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_ID_PROP_NAME, sessionId);
26227
26280
  }
26228
26281
  get sessionType() {
26229
26282
  return this._sessionType;
26230
26283
  }
26231
26284
  set sessionType(sessionType) {
26232
26285
  this._sessionType = sessionType;
26233
- const continuousRecording = sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS;
26286
+ const continuousRecording = sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS;
26234
26287
  this._sessionWidget.updateContinuousRecordingState(continuousRecording);
26235
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('continuous-debugging', continuousRecording);
26236
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_TYPE_PROP_NAME, sessionType);
26288
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('continuous-debugging', continuousRecording);
26289
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_TYPE_PROP_NAME, sessionType);
26237
26290
  }
26238
26291
  get continuousRecording() {
26239
- return this.sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS;
26292
+ return this.sessionType === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS;
26240
26293
  }
26241
26294
  get sessionState() {
26242
26295
  return this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
@@ -26244,8 +26297,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26244
26297
  set sessionState(state) {
26245
26298
  this._sessionState = state;
26246
26299
  this._sessionWidget.updateState(this._sessionState, this.continuousRecording);
26247
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('state-change', this._sessionState);
26248
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STATE_PROP_NAME, state);
26300
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this._sessionState);
26301
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STATE_PROP_NAME, state);
26249
26302
  // Emit observable event to support React wrapper
26250
26303
  this.emit('state-change', [this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped, this.sessionType]);
26251
26304
  }
@@ -26254,7 +26307,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26254
26307
  }
26255
26308
  set session(session) {
26256
26309
  this._session = session;
26257
- (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_PROP_NAME, this._session);
26310
+ (0,_utils__WEBPACK_IMPORTED_MODULE_2__.setStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_PROP_NAME, this._session);
26258
26311
  }
26259
26312
  get sessionAttributes() {
26260
26313
  return this._sessionAttributes || {};
@@ -26286,16 +26339,17 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26286
26339
  constructor() {
26287
26340
  var _a;
26288
26341
  super();
26289
- this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_9__.ApiService();
26342
+ this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_10__.ApiService();
26290
26343
  this._tracer = new _otel__WEBPACK_IMPORTED_MODULE_0__.TracerBrowserSDK();
26291
26344
  this._recorder = new _rrweb__WEBPACK_IMPORTED_MODULE_1__.RecorderBrowserSDK();
26292
- this._sessionWidget = new _sessionWidget__WEBPACK_IMPORTED_MODULE_7__.SessionWidget();
26293
- this._navigationRecorder = new _navigation__WEBPACK_IMPORTED_MODULE_13__.NavigationRecorder();
26345
+ this._sessionWidget = new _sessionWidget__WEBPACK_IMPORTED_MODULE_8__.SessionWidget();
26346
+ this._navigationRecorder = new _navigation__WEBPACK_IMPORTED_MODULE_14__.NavigationRecorder();
26347
+ this._userAttributes = undefined;
26294
26348
  this._startRequestController = null;
26295
26349
  this._isInitialized = false;
26296
26350
  // Session ID and state are stored in localStorage
26297
26351
  this._sessionId = null;
26298
- this._sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26352
+ this._sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26299
26353
  this._sessionState = null;
26300
26354
  this._session = null;
26301
26355
  this._sessionAttributes = null;
@@ -26305,10 +26359,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26305
26359
  this._error = '';
26306
26360
  // Safety: avoid accessing storage in SSR/non-browser environments
26307
26361
  const isBrowser = typeof window !== 'undefined';
26308
- const sessionLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_PROP_NAME, true) : null;
26309
- const sessionIdLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_ID_PROP_NAME) : null;
26310
- const sessionStateLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STATE_PROP_NAME) : null;
26311
- const sessionTypeLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_TYPE_PROP_NAME) : null;
26362
+ const sessionLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_PROP_NAME, true) : null;
26363
+ const sessionIdLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_ID_PROP_NAME) : null;
26364
+ const sessionStateLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STATE_PROP_NAME) : null;
26365
+ const sessionTypeLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_TYPE_PROP_NAME) : null;
26312
26366
  if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isSessionActive)(sessionLocal, sessionTypeLocal)) {
26313
26367
  this.session = sessionLocal;
26314
26368
  this.sessionId = sessionIdLocal;
@@ -26319,10 +26373,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26319
26373
  this.session = null;
26320
26374
  this.sessionId = null;
26321
26375
  this.sessionState = null;
26322
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26376
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26323
26377
  }
26324
26378
  this._configs = {
26325
- ..._config__WEBPACK_IMPORTED_MODULE_4__.BASE_CONFIG,
26379
+ ..._config__WEBPACK_IMPORTED_MODULE_5__.BASE_CONFIG,
26326
26380
  apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || '',
26327
26381
  };
26328
26382
  }
@@ -26334,11 +26388,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26334
26388
  if (typeof window === 'undefined') {
26335
26389
  return;
26336
26390
  }
26337
- this._configs = (0,_config__WEBPACK_IMPORTED_MODULE_4__.getSessionRecorderConfig)({ ...this._configs, ...configs });
26391
+ this._configs = (0,_config__WEBPACK_IMPORTED_MODULE_5__.getSessionRecorderConfig)({ ...this._configs, ...configs });
26338
26392
  this._isInitialized = true;
26339
26393
  this._checkOperation('init');
26340
- (0,_patch__WEBPACK_IMPORTED_MODULE_5__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
26341
- (0,_patch__WEBPACK_IMPORTED_MODULE_5__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
26394
+ (0,_patch__WEBPACK_IMPORTED_MODULE_6__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
26395
+ (0,_patch__WEBPACK_IMPORTED_MODULE_6__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
26342
26396
  this._tracer.init(this._configs);
26343
26397
  this._apiService.init(this._configs);
26344
26398
  this._sessionWidget.init(this._configs);
@@ -26348,16 +26402,26 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26348
26402
  environment: this._configs.environment,
26349
26403
  version: this._configs.version,
26350
26404
  });
26405
+ (0,_services_socket_service__WEBPACK_IMPORTED_MODULE_4__.createSocketService)({
26406
+ apiKey: this._configs.apiKey,
26407
+ socketUrl: this._configs.apiBaseUrl || '',
26408
+ usePostMessageFallback: Boolean(this._configs.usePostMessageFallback),
26409
+ keepAlive: Boolean(this._configs.useWebsocket),
26410
+ });
26351
26411
  if (this._configs.apiKey) {
26352
26412
  this._recorder.init(this._configs);
26353
26413
  }
26354
- if (this.sessionId && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.paused)) {
26414
+ if (this.sessionId
26415
+ && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started
26416
+ || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.paused)) {
26355
26417
  this._start();
26356
26418
  }
26357
26419
  this._registerWidgetEvents();
26358
26420
  this._registerSessionLimitReach();
26359
26421
  this._registerSessionAutoCreation();
26360
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('state-change', this.sessionState);
26422
+ this._registerRemoteSessionRecordingStart();
26423
+ this._registerRemoteSessionRecordingStop();
26424
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
26361
26425
  // Emit init observable event
26362
26426
  this.emit('init', [this]);
26363
26427
  }
@@ -26370,7 +26434,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26370
26434
  if (!this.continuousRecording || !this._configs.showContinuousRecording) {
26371
26435
  return;
26372
26436
  }
26373
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVING);
26437
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVING);
26374
26438
  const res = await this._apiService.saveContinuousDebugSession(this.sessionId, {
26375
26439
  sessionAttributes: this.sessionAttributes,
26376
26440
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
@@ -26379,7 +26443,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26379
26443
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
26380
26444
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
26381
26445
  });
26382
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVED);
26446
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVED);
26383
26447
  const sessionUrl = res === null || res === void 0 ? void 0 : res.url;
26384
26448
  this._sessionWidget.showToast({
26385
26449
  type: 'success',
@@ -26392,11 +26456,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26392
26456
  }
26393
26457
  catch (error) {
26394
26458
  this.error = error.message;
26395
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.ERROR);
26459
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.ERROR);
26396
26460
  }
26397
26461
  finally {
26398
26462
  setTimeout(() => {
26399
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.IDLE);
26463
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.IDLE);
26400
26464
  }, 3000);
26401
26465
  }
26402
26466
  }
@@ -26405,11 +26469,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26405
26469
  * @param type - the type of session to start
26406
26470
  * @param session - the session to start
26407
26471
  */
26408
- start(type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL, session) {
26472
+ start(type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL, session) {
26409
26473
  this._checkOperation('start');
26410
26474
  // If continuous recording is disabled, force plain mode
26411
- if (type === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS && !this._configs.showContinuousRecording) {
26412
- type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26475
+ if (type === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS && !this._configs.showContinuousRecording) {
26476
+ type = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26413
26477
  }
26414
26478
  this.sessionType = type;
26415
26479
  this._startRequestController = new AbortController();
@@ -26430,7 +26494,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26430
26494
  this._stop();
26431
26495
  if (this.continuousRecording) {
26432
26496
  await this._apiService.stopContinuousDebugSession(this.sessionId);
26433
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26497
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26434
26498
  }
26435
26499
  else {
26436
26500
  const request = {
@@ -26438,7 +26502,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26438
26502
  stoppedAt: this._recorder.stoppedAt,
26439
26503
  };
26440
26504
  const response = await this._apiService.stopSession(this.sessionId, request);
26441
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_RESPONSE, response);
26505
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_RESPONSE, response);
26442
26506
  }
26443
26507
  this._clearSession();
26444
26508
  }
@@ -26479,7 +26543,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26479
26543
  this._stop();
26480
26544
  if (this.continuousRecording) {
26481
26545
  await this._apiService.stopContinuousDebugSession(this.sessionId);
26482
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26546
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26483
26547
  }
26484
26548
  else {
26485
26549
  await this._apiService.cancelSession(this.sessionId);
@@ -26503,7 +26567,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26503
26567
  * The function receives the click event as its parameter and
26504
26568
  * should return `false` to prevent the default button action,
26505
26569
  * or `true` (or nothing) to allow it.
26506
- */
26570
+ */
26507
26571
  set recordingButtonClickHandler(handler) {
26508
26572
  this._sessionWidget.buttonClickExternalHandler = handler;
26509
26573
  }
@@ -26539,11 +26603,12 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26539
26603
  ...(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
26540
26604
  ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {}),
26541
26605
  },
26606
+ userAttributes: this._userAttributes
26542
26607
  };
26543
26608
  const { state } = await this._apiService.checkRemoteSession(payload);
26544
26609
  if (state == 'START') {
26545
26610
  if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started) {
26546
- await this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS);
26611
+ await this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS);
26547
26612
  }
26548
26613
  }
26549
26614
  else if (state == 'STOP') {
@@ -26592,7 +26657,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26592
26657
  }
26593
26658
  _handleStart() {
26594
26659
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
26595
- this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL);
26660
+ this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL);
26596
26661
  }
26597
26662
  }
26598
26663
  _handleStop(comment) {
@@ -26622,14 +26687,14 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26622
26687
  }
26623
26688
  _handleContinuousDebugging() {
26624
26689
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
26625
- this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS);
26690
+ this.start(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS);
26626
26691
  }
26627
26692
  }
26628
26693
  /**
26629
26694
  * Register session limit reaching listeners for controlling session end
26630
26695
  */
26631
26696
  _registerSessionLimitReach() {
26632
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STOPPED_EVENT, () => {
26697
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STOPPED_EVENT, () => {
26633
26698
  this._stop();
26634
26699
  this._clearSession();
26635
26700
  this._sessionWidget.handleUIReseting();
@@ -26639,7 +26704,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26639
26704
  * Register session auto creation listeners during continuous recording
26640
26705
  */
26641
26706
  _registerSessionAutoCreation() {
26642
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_AUTO_CREATED, (payload) => {
26707
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_AUTO_CREATED, (payload) => {
26643
26708
  var _a;
26644
26709
  if (!(payload === null || payload === void 0 ? void 0 : payload.data))
26645
26710
  return;
@@ -26653,6 +26718,18 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26653
26718
  }, 5000);
26654
26719
  });
26655
26720
  }
26721
+ _registerRemoteSessionRecordingStart() {
26722
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_START, (payload) => {
26723
+ console.log('REMOTE_SESSION_RECORDING_START', payload);
26724
+ this.start();
26725
+ });
26726
+ }
26727
+ _registerRemoteSessionRecordingStop() {
26728
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_STOP, (payload) => {
26729
+ console.log('REMOTE_SESSION_RECORDING_STOP', payload);
26730
+ this.stop();
26731
+ });
26732
+ }
26656
26733
  /**
26657
26734
  * Create a new session and start it
26658
26735
  */
@@ -26663,6 +26740,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26663
26740
  const payload = {
26664
26741
  sessionAttributes: this.sessionAttributes,
26665
26742
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
26743
+ userAttributes: this._userAttributes,
26666
26744
  name: this.sessionAttributes.userName
26667
26745
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
26668
26746
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
@@ -26674,8 +26752,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26674
26752
  : await this._apiService.startSession(request, signal);
26675
26753
  if (session) {
26676
26754
  session.sessionType = this.continuousRecording
26677
- ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS
26678
- : _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26755
+ ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.CONTINUOUS
26756
+ : _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26679
26757
  this._setupSessionAndStart(session, false);
26680
26758
  }
26681
26759
  }
@@ -26683,7 +26761,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26683
26761
  this.error = error.message;
26684
26762
  this.sessionState = _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
26685
26763
  if (this.continuousRecording) {
26686
- this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.MANUAL;
26764
+ this.sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_12__.SessionType.MANUAL;
26687
26765
  }
26688
26766
  }
26689
26767
  }
@@ -26698,7 +26776,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26698
26776
  this._recorder.start(this.sessionId, this.sessionType);
26699
26777
  this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType, });
26700
26778
  if (this.session) {
26701
- _eventBus__WEBPACK_IMPORTED_MODULE_6__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STARTED_EVENT, this.session);
26779
+ _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STARTED_EVENT, this.session);
26702
26780
  this._recorder.subscribeToSession(this.session);
26703
26781
  this._sessionWidget.seconds = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getTimeDifferenceInSeconds)((_a = this.session) === null || _a === void 0 ? void 0 : _a.startedAt);
26704
26782
  }
@@ -26824,6 +26902,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26824
26902
  return { errorInfo: String(errorInfo) };
26825
26903
  }
26826
26904
  }
26905
+ setUser(userAttributes) {
26906
+ this._userAttributes = userAttributes;
26907
+ _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);
26908
+ }
26827
26909
  }
26828
26910
 
26829
26911
 
@@ -28151,6 +28233,25 @@ const getButtonTemplate = (button) => {
28151
28233
  };
28152
28234
 
28153
28235
 
28236
+ /***/ }),
28237
+
28238
+ /***/ "./src/types/client-type.enum.ts":
28239
+ /*!***************************************!*\
28240
+ !*** ./src/types/client-type.enum.ts ***!
28241
+ \***************************************/
28242
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
28243
+
28244
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28245
+ /* harmony export */ UserType: () => (/* binding */ UserType)
28246
+ /* harmony export */ });
28247
+ var UserType;
28248
+ (function (UserType) {
28249
+ UserType["USER"] = "USER";
28250
+ UserType["VISITOR"] = "VISITOR";
28251
+ UserType["API_CLIENT"] = "API_CLIENT";
28252
+ })(UserType || (UserType = {}));
28253
+
28254
+
28154
28255
  /***/ }),
28155
28256
 
28156
28257
  /***/ "./src/types/index.ts":
@@ -28162,11 +28263,14 @@ const getButtonTemplate = (button) => {
28162
28263
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28163
28264
  /* harmony export */ DebugSessionDataType: () => (/* reexport safe */ _session__WEBPACK_IMPORTED_MODULE_1__.DebugSessionDataType),
28164
28265
  /* harmony export */ SessionState: () => (/* reexport safe */ _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__.SessionState),
28266
+ /* harmony export */ UserType: () => (/* reexport safe */ _client_type_enum__WEBPACK_IMPORTED_MODULE_3__.UserType),
28165
28267
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__.WidgetButtonPlacement)
28166
28268
  /* harmony export */ });
28167
28269
  /* harmony import */ var _widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./widget */ "./src/types/widget.ts");
28168
28270
  /* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./session */ "./src/types/session.ts");
28169
28271
  /* harmony import */ var _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sessionRecorder */ "./src/types/sessionRecorder.ts");
28272
+ /* harmony import */ var _client_type_enum__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./client-type.enum */ "./src/types/client-type.enum.ts");
28273
+
28170
28274
 
28171
28275
 
28172
28276
 
@@ -48106,6 +48210,7 @@ var __webpack_exports__ = {};
48106
48210
  /* harmony export */ SessionRecorderTraceIdRatioBasedSampler: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_6__.SessionRecorderTraceIdRatioBasedSampler),
48107
48211
  /* harmony export */ SessionState: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.SessionState),
48108
48212
  /* harmony export */ SessionType: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_6__.SessionType),
48213
+ /* harmony export */ UserType: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.UserType),
48109
48214
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.WidgetButtonPlacement),
48110
48215
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
48111
48216
  /* harmony export */ recorderEventBus: () => (/* reexport safe */ _eventBus__WEBPACK_IMPORTED_MODULE_2__.recorderEventBus)
@@ -48200,9 +48305,10 @@ var __webpack_exports__SessionRecorderSdk = __webpack_exports__.SessionRecorderS
48200
48305
  var __webpack_exports__SessionRecorderTraceIdRatioBasedSampler = __webpack_exports__.SessionRecorderTraceIdRatioBasedSampler;
48201
48306
  var __webpack_exports__SessionState = __webpack_exports__.SessionState;
48202
48307
  var __webpack_exports__SessionType = __webpack_exports__.SessionType;
48308
+ var __webpack_exports__UserType = __webpack_exports__.UserType;
48203
48309
  var __webpack_exports__WidgetButtonPlacement = __webpack_exports__.WidgetButtonPlacement;
48204
48310
  var __webpack_exports__default = __webpack_exports__["default"];
48205
48311
  var __webpack_exports__recorderEventBus = __webpack_exports__.recorderEventBus;
48206
- export { __webpack_exports__ATTR_MULTIPLAYER_CLIENT_ID as ATTR_MULTIPLAYER_CLIENT_ID, __webpack_exports__ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE as ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE, __webpack_exports__ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON as ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON, __webpack_exports__ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE as ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE, __webpack_exports__ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE_ENCODING as ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE_ENCODING, __webpack_exports__ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE as ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE, __webpack_exports__ATTR_MULTIPLAYER_HTTP_PROXY as ATTR_MULTIPLAYER_HTTP_PROXY, __webpack_exports__ATTR_MULTIPLAYER_HTTP_PROXY_TYPE as ATTR_MULTIPLAYER_HTTP_PROXY_TYPE, __webpack_exports__ATTR_MULTIPLAYER_HTTP_REQUEST_BODY as ATTR_MULTIPLAYER_HTTP_REQUEST_BODY, __webpack_exports__ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS as ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS, __webpack_exports__ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY as ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY, __webpack_exports__ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING as ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING, __webpack_exports__ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS as ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS, __webpack_exports__ATTR_MULTIPLAYER_INTEGRATION_ID as ATTR_MULTIPLAYER_INTEGRATION_ID, __webpack_exports__ATTR_MULTIPLAYER_ISSUE_CUSTOM_HASH as ATTR_MULTIPLAYER_ISSUE_CUSTOM_HASH, __webpack_exports__ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY as ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY, __webpack_exports__ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY_ENCODING as ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY_ENCODING, __webpack_exports__ATTR_MULTIPLAYER_PLATFORM_ID as ATTR_MULTIPLAYER_PLATFORM_ID, __webpack_exports__ATTR_MULTIPLAYER_PLATFORM_NAME as ATTR_MULTIPLAYER_PLATFORM_NAME, __webpack_exports__ATTR_MULTIPLAYER_PROJECT_ID as ATTR_MULTIPLAYER_PROJECT_ID, __webpack_exports__ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE as ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE, __webpack_exports__ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE_ENCODING as ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE_ENCODING, __webpack_exports__ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE as ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE, __webpack_exports__ATTR_MULTIPLAYER_SESSION_ID as ATTR_MULTIPLAYER_SESSION_ID, __webpack_exports__ATTR_MULTIPLAYER_SESSION_RECORDER_VERSION as ATTR_MULTIPLAYER_SESSION_RECORDER_VERSION, __webpack_exports__ATTR_MULTIPLAYER_WORKSPACE_ID as ATTR_MULTIPLAYER_WORKSPACE_ID, __webpack_exports__DebugSessionDataType as DebugSessionDataType, __webpack_exports__MASK_PLACEHOLDER as MASK_PLACEHOLDER, __webpack_exports__MULTIPLAYER_ATTRIBUTE_PREFIX as MULTIPLAYER_ATTRIBUTE_PREFIX, __webpack_exports__MULTIPLAYER_BASE_API_URL as MULTIPLAYER_BASE_API_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_GRPC_URL as MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_GRPC_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_HTTP_URL as MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_HTTP_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_URL as MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_GRPC_URL as MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_GRPC_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL as MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL as MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL, __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX as MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, __webpack_exports__MULTIPLAYER_TRACE_DEBUG_PREFIX as MULTIPLAYER_TRACE_DEBUG_PREFIX, __webpack_exports__MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH as MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH, __webpack_exports__MULTIPLAYER_TRACE_DOC_PREFIX as MULTIPLAYER_TRACE_DOC_PREFIX, __webpack_exports__NavigationRecorder as NavigationRecorder, __webpack_exports__SessionRecorderBrowserTraceExporter as SessionRecorderBrowserTraceExporter, __webpack_exports__SessionRecorderIdGenerator as SessionRecorderIdGenerator, __webpack_exports__SessionRecorderSdk as SessionRecorderSdk, __webpack_exports__SessionRecorderTraceIdRatioBasedSampler as SessionRecorderTraceIdRatioBasedSampler, __webpack_exports__SessionState as SessionState, __webpack_exports__SessionType as SessionType, __webpack_exports__WidgetButtonPlacement as WidgetButtonPlacement, __webpack_exports__default as default, __webpack_exports__recorderEventBus as recorderEventBus };
48312
+ export { __webpack_exports__ATTR_MULTIPLAYER_CLIENT_ID as ATTR_MULTIPLAYER_CLIENT_ID, __webpack_exports__ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE as ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE, __webpack_exports__ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON as ATTR_MULTIPLAYER_CONTINUOUS_SESSION_AUTO_SAVE_REASON, __webpack_exports__ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE as ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE, __webpack_exports__ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE_ENCODING as ATTR_MULTIPLAYER_GRPC_REQUEST_MESSAGE_ENCODING, __webpack_exports__ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE as ATTR_MULTIPLAYER_GRPC_RESPONSE_MESSAGE, __webpack_exports__ATTR_MULTIPLAYER_HTTP_PROXY as ATTR_MULTIPLAYER_HTTP_PROXY, __webpack_exports__ATTR_MULTIPLAYER_HTTP_PROXY_TYPE as ATTR_MULTIPLAYER_HTTP_PROXY_TYPE, __webpack_exports__ATTR_MULTIPLAYER_HTTP_REQUEST_BODY as ATTR_MULTIPLAYER_HTTP_REQUEST_BODY, __webpack_exports__ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS as ATTR_MULTIPLAYER_HTTP_REQUEST_HEADERS, __webpack_exports__ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY as ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY, __webpack_exports__ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING as ATTR_MULTIPLAYER_HTTP_RESPONSE_BODY_ENCODING, __webpack_exports__ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS as ATTR_MULTIPLAYER_HTTP_RESPONSE_HEADERS, __webpack_exports__ATTR_MULTIPLAYER_INTEGRATION_ID as ATTR_MULTIPLAYER_INTEGRATION_ID, __webpack_exports__ATTR_MULTIPLAYER_ISSUE_CUSTOM_HASH as ATTR_MULTIPLAYER_ISSUE_CUSTOM_HASH, __webpack_exports__ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY as ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY, __webpack_exports__ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY_ENCODING as ATTR_MULTIPLAYER_MESSAGING_MESSAGE_BODY_ENCODING, __webpack_exports__ATTR_MULTIPLAYER_PLATFORM_ID as ATTR_MULTIPLAYER_PLATFORM_ID, __webpack_exports__ATTR_MULTIPLAYER_PLATFORM_NAME as ATTR_MULTIPLAYER_PLATFORM_NAME, __webpack_exports__ATTR_MULTIPLAYER_PROJECT_ID as ATTR_MULTIPLAYER_PROJECT_ID, __webpack_exports__ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE as ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE, __webpack_exports__ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE_ENCODING as ATTR_MULTIPLAYER_RPC_REQUEST_MESSAGE_ENCODING, __webpack_exports__ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE as ATTR_MULTIPLAYER_RPC_RESPONSE_MESSAGE, __webpack_exports__ATTR_MULTIPLAYER_SESSION_ID as ATTR_MULTIPLAYER_SESSION_ID, __webpack_exports__ATTR_MULTIPLAYER_SESSION_RECORDER_VERSION as ATTR_MULTIPLAYER_SESSION_RECORDER_VERSION, __webpack_exports__ATTR_MULTIPLAYER_WORKSPACE_ID as ATTR_MULTIPLAYER_WORKSPACE_ID, __webpack_exports__DebugSessionDataType as DebugSessionDataType, __webpack_exports__MASK_PLACEHOLDER as MASK_PLACEHOLDER, __webpack_exports__MULTIPLAYER_ATTRIBUTE_PREFIX as MULTIPLAYER_ATTRIBUTE_PREFIX, __webpack_exports__MULTIPLAYER_BASE_API_URL as MULTIPLAYER_BASE_API_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_GRPC_URL as MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_GRPC_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_HTTP_URL as MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_HTTP_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_URL as MULTIPLAYER_OTEL_DEFAULT_LOGS_EXPORTER_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_GRPC_URL as MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_GRPC_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL as MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL, __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL as MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL, __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX as MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, __webpack_exports__MULTIPLAYER_TRACE_DEBUG_PREFIX as MULTIPLAYER_TRACE_DEBUG_PREFIX, __webpack_exports__MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH as MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH, __webpack_exports__MULTIPLAYER_TRACE_DOC_PREFIX as MULTIPLAYER_TRACE_DOC_PREFIX, __webpack_exports__NavigationRecorder as NavigationRecorder, __webpack_exports__SessionRecorderBrowserTraceExporter as SessionRecorderBrowserTraceExporter, __webpack_exports__SessionRecorderIdGenerator as SessionRecorderIdGenerator, __webpack_exports__SessionRecorderSdk as SessionRecorderSdk, __webpack_exports__SessionRecorderTraceIdRatioBasedSampler as SessionRecorderTraceIdRatioBasedSampler, __webpack_exports__SessionState as SessionState, __webpack_exports__SessionType as SessionType, __webpack_exports__UserType as UserType, __webpack_exports__WidgetButtonPlacement as WidgetButtonPlacement, __webpack_exports__default as default, __webpack_exports__recorderEventBus as recorderEventBus };
48207
48313
 
48208
48314
  //# sourceMappingURL=index.js.map