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