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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +44 -14
  2. package/dist/browser/index.js +340 -240
  3. package/dist/browser/index.js.map +1 -1
  4. package/dist/config/constants.d.ts +3 -0
  5. package/dist/config/constants.d.ts.map +1 -1
  6. package/dist/config/constants.js +3 -0
  7. package/dist/config/constants.js.map +1 -1
  8. package/dist/config/defaults.d.ts.map +1 -1
  9. package/dist/config/defaults.js +1 -0
  10. package/dist/config/defaults.js.map +1 -1
  11. package/dist/config/session-recorder.d.ts.map +1 -1
  12. package/dist/config/session-recorder.js +2 -0
  13. package/dist/config/session-recorder.js.map +1 -1
  14. package/dist/exporters/index.js +182 -114
  15. package/dist/exporters/index.js.map +1 -1
  16. package/dist/exporters.d.ts +1 -1
  17. package/dist/exporters.d.ts.map +1 -1
  18. package/dist/exporters.js +1 -1
  19. package/dist/exporters.js.map +1 -1
  20. package/dist/index.js +338 -239
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.umd.js +338 -239
  23. package/dist/index.umd.js.map +1 -1
  24. package/dist/otel/helpers.d.ts.map +1 -1
  25. package/dist/otel/helpers.js +1 -8
  26. package/dist/otel/helpers.js.map +1 -1
  27. package/dist/otel/index.d.ts.map +1 -1
  28. package/dist/otel/index.js +4 -0
  29. package/dist/otel/index.js.map +1 -1
  30. package/dist/patch/fetch.js +1 -0
  31. package/dist/patch/fetch.js.map +1 -1
  32. package/dist/rrweb/index.d.ts +2 -3
  33. package/dist/rrweb/index.d.ts.map +1 -1
  34. package/dist/rrweb/index.js +7 -11
  35. package/dist/rrweb/index.js.map +1 -1
  36. package/dist/services/api.service.d.ts +8 -2
  37. package/dist/services/api.service.d.ts.map +1 -1
  38. package/dist/services/api.service.js.map +1 -1
  39. package/dist/{rrweb/exporter.d.ts → services/socket.service.d.ts} +12 -3
  40. package/dist/services/socket.service.d.ts.map +1 -0
  41. package/dist/{rrweb/exporter.js → services/socket.service.js} +41 -5
  42. package/dist/services/socket.service.js.map +1 -0
  43. package/dist/sessionRecorder.d.ts +6 -2
  44. package/dist/sessionRecorder.d.ts.map +1 -1
  45. package/dist/sessionRecorder.js +33 -3
  46. package/dist/sessionRecorder.js.map +1 -1
  47. package/dist/types/index.d.ts +1 -0
  48. package/dist/types/index.d.ts.map +1 -1
  49. package/dist/types/index.js +1 -0
  50. package/dist/types/index.js.map +1 -1
  51. package/dist/types/sessionRecorder.d.ts +5 -0
  52. package/dist/types/sessionRecorder.d.ts.map +1 -1
  53. package/dist/types/sessionRecorder.js.map +1 -1
  54. package/package.json +3 -3
  55. package/dist/rrweb/exporter.d.ts.map +0 -1
  56. package/dist/rrweb/exporter.js.map +0 -1
package/dist/index.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.36" || 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
 
@@ -24970,14 +24982,7 @@ const getExporterEndpoint = (exporterEndpoint) => {
24970
24982
  return `${trimmedExporterEndpoint}/v1/traces`;
24971
24983
  };
24972
24984
  const getElementTextContent = (element) => {
24973
- const getInnerText = (element) => {
24974
- const slicedText = element.innerText.slice(0, 50);
24975
- if (slicedText.length < element.innerText.length) {
24976
- return `${slicedText}...`;
24977
- }
24978
- return slicedText;
24979
- };
24980
- return String(element.textContent || element.ariaLabel || getInnerText(element) || '').trim();
24985
+ return String(element.textContent || element.ariaLabel || '').trim();
24981
24986
  };
24982
24987
 
24983
24988
 
@@ -25200,6 +25205,7 @@ class TracerBrowserSDK {
25200
25205
  });
25201
25206
  return;
25202
25207
  }
25208
+ // eslint-disable-next-line
25203
25209
  }
25204
25210
  catch (_ignored) { }
25205
25211
  // Fallback: create a short-lived span to hold the exception details
@@ -25215,6 +25221,7 @@ class TracerBrowserSDK {
25215
25221
  ...(errorInfo || {}),
25216
25222
  });
25217
25223
  span.end();
25224
+ // eslint-disable-next-line
25218
25225
  }
25219
25226
  catch (_ignored) { }
25220
25227
  }
@@ -25236,12 +25243,14 @@ class TracerBrowserSDK {
25236
25243
  return;
25237
25244
  if (typeof window === 'undefined')
25238
25245
  return;
25246
+ // eslint-disable-next-line
25239
25247
  const errorHandler = (event) => {
25240
25248
  const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error
25241
25249
  ? event.error
25242
25250
  : new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
25243
25251
  this.captureException(err);
25244
25252
  };
25253
+ // eslint-disable-next-line
25245
25254
  const rejectionHandler = (event) => {
25246
25255
  const reason = (event && 'reason' in event) ? event.reason : undefined;
25247
25256
  const err = reason instanceof Error
@@ -25416,6 +25425,7 @@ if (typeof window !== 'undefined' && typeof window.fetch !== 'undefined') {
25416
25425
  : (typeof input === 'string' || input instanceof URL ? String(input) : '');
25417
25426
  // Only attempt to read the body from init (safe); avoid constructing/cloning Requests
25418
25427
  // If the caller passed a Request as input, we do not attempt to read its body here
25428
+ // eslint-disable-next-line
25419
25429
  const candidateBody = init === null || init === void 0 ? void 0 : init.body;
25420
25430
  if (!(0,_utils_type_utils__WEBPACK_IMPORTED_MODULE_0__.isNullish)(candidateBody)) {
25421
25431
  const requestBody = _tryReadFetchBody({
@@ -25605,168 +25615,6 @@ if (typeof XMLHttpRequest !== 'undefined') {
25605
25615
  }
25606
25616
 
25607
25617
 
25608
- /***/ }),
25609
-
25610
- /***/ "./src/rrweb/exporter.ts":
25611
- /*!*******************************!*\
25612
- !*** ./src/rrweb/exporter.ts ***!
25613
- \*******************************/
25614
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
25615
-
25616
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25617
- /* harmony export */ RrwebEventExporter: () => (/* binding */ RrwebEventExporter)
25618
- /* harmony export */ });
25619
- /* harmony import */ var socket_io_client__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! socket.io-client */ "../../node_modules/socket.io-client/build/esm/index.js");
25620
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../eventBus */ "./src/eventBus.ts");
25621
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../services/messaging.service */ "./src/services/messaging.service.ts");
25622
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25623
-
25624
-
25625
-
25626
-
25627
- const MAX_RECONNECTION_ATTEMPTS = 2;
25628
- class RrwebEventExporter {
25629
- constructor(options) {
25630
- this.options = options;
25631
- this.socket = null;
25632
- this.queue = [];
25633
- this.isConnecting = false;
25634
- this.isConnected = false;
25635
- this.usePostMessage = false;
25636
- this.attempts = 0;
25637
- this.sessionId = null;
25638
- }
25639
- init() {
25640
- if (this.isConnecting || this.isConnected)
25641
- return;
25642
- this.attempts++;
25643
- this.isConnecting = true;
25644
- this.usePostMessage = false;
25645
- this.socket = (0,socket_io_client__WEBPACK_IMPORTED_MODULE_0__["default"])(this.options.socketUrl, {
25646
- path: '/v0/radar/ws',
25647
- auth: {
25648
- 'x-api-key': this.options.apiKey,
25649
- },
25650
- reconnectionAttempts: 2,
25651
- transports: ['websocket'],
25652
- });
25653
- // this.socket.on('connect', () => {
25654
- // this.isConnecting = false
25655
- // this.isConnected = true
25656
- // this.usePostMessage = false
25657
- // this.flushQueue()
25658
- // })
25659
- this.socket.on('ready', () => {
25660
- this.isConnecting = false;
25661
- this.isConnected = true;
25662
- this.usePostMessage = false;
25663
- this.flushQueue();
25664
- });
25665
- this.socket.on('disconnect', (err) => {
25666
- this.isConnecting = false;
25667
- this.isConnected = false;
25668
- });
25669
- this.socket.on('connect_error', (err) => {
25670
- this.isConnecting = false;
25671
- this.isConnected = false;
25672
- this.checkReconnectionAttempts();
25673
- });
25674
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, (data) => {
25675
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_STOPPED_EVENT, data);
25676
- this.unsubscribeFromSession();
25677
- });
25678
- this.socket.on(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, (data) => {
25679
- _eventBus__WEBPACK_IMPORTED_MODULE_1__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_AUTO_CREATED, data);
25680
- });
25681
- }
25682
- checkReconnectionAttempts() {
25683
- if (this.attempts >= MAX_RECONNECTION_ATTEMPTS) {
25684
- this.usePostMessage = !!this.options.usePostMessageFallback;
25685
- this.flushQueue();
25686
- }
25687
- }
25688
- sendViaPostMessage(event) {
25689
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('rrweb-event', event);
25690
- }
25691
- flushQueue() {
25692
- var _a, _b;
25693
- while (this.queue.length > 0 && (this.usePostMessage || ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected))) {
25694
- const event = this.queue.shift();
25695
- if (!event)
25696
- continue;
25697
- if (this.usePostMessage) {
25698
- this.sendViaPostMessage(event.data);
25699
- }
25700
- else if ((_b = this.socket) === null || _b === void 0 ? void 0 : _b.connected) {
25701
- this.socket.emit(event.name, event.data);
25702
- }
25703
- }
25704
- }
25705
- unsubscribeFromSession() {
25706
- var _a;
25707
- const payload = {
25708
- debugSessionId: this.sessionId,
25709
- };
25710
- if (this.usePostMessage) {
25711
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_2__["default"].sendMessage('socket-emit', { event: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, data: payload });
25712
- }
25713
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25714
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_UNSUBSCRIBE_EVENT, payload);
25715
- }
25716
- }
25717
- send(event) {
25718
- var _a;
25719
- if (this.usePostMessage) {
25720
- this.sendViaPostMessage(event);
25721
- }
25722
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25723
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT, event);
25724
- }
25725
- else {
25726
- this.queue.push({ data: event, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_ADD_EVENT });
25727
- this.init();
25728
- }
25729
- }
25730
- subscribeToSession(session) {
25731
- var _a;
25732
- this.sessionId = session.shortId || session._id;
25733
- const payload = {
25734
- projectId: session.project,
25735
- workspaceId: session.workspace,
25736
- debugSessionId: this.sessionId,
25737
- sessionType: session.creationType,
25738
- };
25739
- if (this.usePostMessage) {
25740
- this.sendViaPostMessage({ type: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, ...payload });
25741
- }
25742
- else if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25743
- this.socket.emit(_config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT, payload);
25744
- }
25745
- else {
25746
- this.queue.push({ data: payload, name: _config__WEBPACK_IMPORTED_MODULE_3__.SESSION_SUBSCRIBE_EVENT });
25747
- this.init();
25748
- }
25749
- }
25750
- close() {
25751
- var _a;
25752
- if (this.usePostMessage) {
25753
- this.sendViaPostMessage({ type: 'close' });
25754
- }
25755
- if ((_a = this.socket) === null || _a === void 0 ? void 0 : _a.connected) {
25756
- setTimeout(() => {
25757
- var _a;
25758
- this.unsubscribeFromSession();
25759
- this.attempts = 0;
25760
- this.isConnected = false;
25761
- this.isConnecting = false;
25762
- (_a = this.socket) === null || _a === void 0 ? void 0 : _a.disconnect();
25763
- this.socket = null;
25764
- }, 500);
25765
- }
25766
- }
25767
- }
25768
-
25769
-
25770
25618
  /***/ }),
25771
25619
 
25772
25620
  /***/ "./src/rrweb/index.ts":
@@ -25784,7 +25632,7 @@ class RrwebEventExporter {
25784
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");
25785
25633
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ "./src/utils/index.ts");
25786
25634
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25787
- /* 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");
25788
25636
 
25789
25637
 
25790
25638
 
@@ -25816,11 +25664,6 @@ class RecorderBrowserSDK {
25816
25664
  */
25817
25665
  init(config) {
25818
25666
  this.config = config;
25819
- this.exporter = new _exporter__WEBPACK_IMPORTED_MODULE_5__.RrwebEventExporter({
25820
- apiKey: config.apiKey,
25821
- socketUrl: config.apiBaseUrl || '',
25822
- usePostMessageFallback: Boolean(config.usePostMessageFallback),
25823
- });
25824
25667
  }
25825
25668
  /**
25826
25669
  * Starts recording events for a given session ID.
@@ -25866,7 +25709,7 @@ class RecorderBrowserSDK {
25866
25709
  this.stopFn = (0,rrweb__WEBPACK_IMPORTED_MODULE_6__.record)({
25867
25710
  ...options,
25868
25711
  emit: async (event) => {
25869
- if (this.exporter) {
25712
+ if (_services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService) {
25870
25713
  if (typeof maskingConfig.maskConsoleEvent === 'function' && (0,_utils__WEBPACK_IMPORTED_MODULE_3__.isConsoleEvent)(event)) {
25871
25714
  const { data } = event;
25872
25715
  const maskedPayload = maskingConfig.maskConsoleEvent(data.payload);
@@ -25874,7 +25717,7 @@ class RecorderBrowserSDK {
25874
25717
  }
25875
25718
  const packedEvent = (0,_rrweb_packer__WEBPACK_IMPORTED_MODULE_0__.pack)(event);
25876
25719
  this.stoppedAt = new Date(event.timestamp).toISOString();
25877
- this.exporter.send({
25720
+ _services_socket_service__WEBPACK_IMPORTED_MODULE_5__.socketService.send({
25878
25721
  event: packedEvent,
25879
25722
  eventType: event.type,
25880
25723
  timestamp: event.timestamp,
@@ -25915,12 +25758,13 @@ class RecorderBrowserSDK {
25915
25758
  stop() {
25916
25759
  var _a, _b;
25917
25760
  (_a = this.stopFn) === null || _a === void 0 ? void 0 : _a.call(this);
25918
- (_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
+ }
25919
25764
  this.clearRestartInterval();
25920
25765
  }
25921
25766
  subscribeToSession(session) {
25922
- var _a;
25923
- (_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);
25924
25768
  }
25925
25769
  }
25926
25770
 
@@ -26177,6 +26021,206 @@ const messagingService = new MessagingService();
26177
26021
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (messagingService);
26178
26022
 
26179
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
+
26180
26224
  /***/ }),
26181
26225
 
26182
26226
  /***/ "./src/sessionRecorder.ts":
@@ -26192,17 +26236,19 @@ const messagingService = new MessagingService();
26192
26236
  /* harmony import */ var _rrweb__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./rrweb */ "./src/rrweb/index.ts");
26193
26237
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils */ "./src/utils/index.ts");
26194
26238
  /* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ "./src/types/index.ts");
26195
- /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ "./src/config/index.ts");
26196
- /* harmony import */ var _patch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./patch */ "./src/patch/index.ts");
26197
- /* harmony import */ var _eventBus__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./eventBus */ "./src/eventBus.ts");
26198
- /* harmony import */ var _sessionWidget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./sessionWidget */ "./src/sessionWidget/index.ts");
26199
- /* harmony import */ var _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./services/messaging.service */ "./src/services/messaging.service.ts");
26200
- /* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./services/api.service */ "./src/services/api.service.ts");
26201
- /* harmony import */ var _index_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./index.scss */ "./src/index.scss");
26202
- /* 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");
26203
- /* harmony import */ var _sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./sessionWidget/buttonStateConfigs */ "./src/sessionWidget/buttonStateConfigs.ts");
26204
- /* harmony import */ var lib0_observable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! lib0/observable */ "../../node_modules/lib0/observable.js");
26205
- /* 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");
26251
+
26206
26252
 
26207
26253
 
26208
26254
 
@@ -26218,7 +26264,7 @@ const messagingService = new MessagingService();
26218
26264
 
26219
26265
 
26220
26266
 
26221
- class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Observable {
26267
+ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_15__.Observable {
26222
26268
  get navigation() {
26223
26269
  return this._navigationRecorder.api;
26224
26270
  }
@@ -26230,20 +26276,20 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26230
26276
  }
26231
26277
  set sessionId(sessionId) {
26232
26278
  this._sessionId = sessionId;
26233
- (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);
26234
26280
  }
26235
26281
  get sessionType() {
26236
26282
  return this._sessionType;
26237
26283
  }
26238
26284
  set sessionType(sessionType) {
26239
26285
  this._sessionType = sessionType;
26240
- 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;
26241
26287
  this._sessionWidget.updateContinuousRecordingState(continuousRecording);
26242
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('continuous-debugging', continuousRecording);
26243
- (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);
26244
26290
  }
26245
26291
  get continuousRecording() {
26246
- 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;
26247
26293
  }
26248
26294
  get sessionState() {
26249
26295
  return this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
@@ -26251,8 +26297,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26251
26297
  set sessionState(state) {
26252
26298
  this._sessionState = state;
26253
26299
  this._sessionWidget.updateState(this._sessionState, this.continuousRecording);
26254
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_8__["default"].sendMessage('state-change', this._sessionState);
26255
- (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);
26256
26302
  // Emit observable event to support React wrapper
26257
26303
  this.emit('state-change', [this._sessionState || _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped, this.sessionType]);
26258
26304
  }
@@ -26261,7 +26307,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26261
26307
  }
26262
26308
  set session(session) {
26263
26309
  this._session = session;
26264
- (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);
26265
26311
  }
26266
26312
  get sessionAttributes() {
26267
26313
  return this._sessionAttributes || {};
@@ -26293,16 +26339,17 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26293
26339
  constructor() {
26294
26340
  var _a;
26295
26341
  super();
26296
- this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_9__.ApiService();
26342
+ this._apiService = new _services_api_service__WEBPACK_IMPORTED_MODULE_10__.ApiService();
26297
26343
  this._tracer = new _otel__WEBPACK_IMPORTED_MODULE_0__.TracerBrowserSDK();
26298
26344
  this._recorder = new _rrweb__WEBPACK_IMPORTED_MODULE_1__.RecorderBrowserSDK();
26299
- this._sessionWidget = new _sessionWidget__WEBPACK_IMPORTED_MODULE_7__.SessionWidget();
26300
- 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;
26301
26348
  this._startRequestController = null;
26302
26349
  this._isInitialized = false;
26303
26350
  // Session ID and state are stored in localStorage
26304
26351
  this._sessionId = null;
26305
- 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;
26306
26353
  this._sessionState = null;
26307
26354
  this._session = null;
26308
26355
  this._sessionAttributes = null;
@@ -26312,10 +26359,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26312
26359
  this._error = '';
26313
26360
  // Safety: avoid accessing storage in SSR/non-browser environments
26314
26361
  const isBrowser = typeof window !== 'undefined';
26315
- const sessionLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_PROP_NAME, true) : null;
26316
- const sessionIdLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_ID_PROP_NAME) : null;
26317
- const sessionStateLocal = isBrowser ? (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getStoredItem)(_config__WEBPACK_IMPORTED_MODULE_4__.SESSION_STATE_PROP_NAME) : null;
26318
- 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;
26319
26366
  if ((0,_utils__WEBPACK_IMPORTED_MODULE_2__.isSessionActive)(sessionLocal, sessionTypeLocal)) {
26320
26367
  this.session = sessionLocal;
26321
26368
  this.sessionId = sessionIdLocal;
@@ -26326,10 +26373,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26326
26373
  this.session = null;
26327
26374
  this.sessionId = null;
26328
26375
  this.sessionState = null;
26329
- 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;
26330
26377
  }
26331
26378
  this._configs = {
26332
- ..._config__WEBPACK_IMPORTED_MODULE_4__.BASE_CONFIG,
26379
+ ..._config__WEBPACK_IMPORTED_MODULE_5__.BASE_CONFIG,
26333
26380
  apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || '',
26334
26381
  };
26335
26382
  }
@@ -26341,11 +26388,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26341
26388
  if (typeof window === 'undefined') {
26342
26389
  return;
26343
26390
  }
26344
- 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 });
26345
26392
  this._isInitialized = true;
26346
26393
  this._checkOperation('init');
26347
- (0,_patch__WEBPACK_IMPORTED_MODULE_5__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
26348
- (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);
26349
26396
  this._tracer.init(this._configs);
26350
26397
  this._apiService.init(this._configs);
26351
26398
  this._sessionWidget.init(this._configs);
@@ -26355,16 +26402,26 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26355
26402
  environment: this._configs.environment,
26356
26403
  version: this._configs.version,
26357
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
+ });
26358
26411
  if (this._configs.apiKey) {
26359
26412
  this._recorder.init(this._configs);
26360
26413
  }
26361
- 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)) {
26362
26417
  this._start();
26363
26418
  }
26364
26419
  this._registerWidgetEvents();
26365
26420
  this._registerSessionLimitReach();
26366
26421
  this._registerSessionAutoCreation();
26367
- _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);
26368
26425
  // Emit init observable event
26369
26426
  this.emit('init', [this]);
26370
26427
  }
@@ -26377,7 +26434,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26377
26434
  if (!this.continuousRecording || !this._configs.showContinuousRecording) {
26378
26435
  return;
26379
26436
  }
26380
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVING);
26437
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVING);
26381
26438
  const res = await this._apiService.saveContinuousDebugSession(this.sessionId, {
26382
26439
  sessionAttributes: this.sessionAttributes,
26383
26440
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
@@ -26386,7 +26443,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26386
26443
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
26387
26444
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
26388
26445
  });
26389
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.SAVED);
26446
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.SAVED);
26390
26447
  const sessionUrl = res === null || res === void 0 ? void 0 : res.url;
26391
26448
  this._sessionWidget.showToast({
26392
26449
  type: 'success',
@@ -26399,11 +26456,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26399
26456
  }
26400
26457
  catch (error) {
26401
26458
  this.error = error.message;
26402
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.ERROR);
26459
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.ERROR);
26403
26460
  }
26404
26461
  finally {
26405
26462
  setTimeout(() => {
26406
- this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_12__.ContinuousRecordingSaveButtonState.IDLE);
26463
+ this._sessionWidget.updateSaveContinuousDebugSessionState(_sessionWidget_buttonStateConfigs__WEBPACK_IMPORTED_MODULE_13__.ContinuousRecordingSaveButtonState.IDLE);
26407
26464
  }, 3000);
26408
26465
  }
26409
26466
  }
@@ -26412,11 +26469,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26412
26469
  * @param type - the type of session to start
26413
26470
  * @param session - the session to start
26414
26471
  */
26415
- 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) {
26416
26473
  this._checkOperation('start');
26417
26474
  // If continuous recording is disabled, force plain mode
26418
- if (type === _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS && !this._configs.showContinuousRecording) {
26419
- 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;
26420
26477
  }
26421
26478
  this.sessionType = type;
26422
26479
  this._startRequestController = new AbortController();
@@ -26437,7 +26494,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26437
26494
  this._stop();
26438
26495
  if (this.continuousRecording) {
26439
26496
  await this._apiService.stopContinuousDebugSession(this.sessionId);
26440
- 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;
26441
26498
  }
26442
26499
  else {
26443
26500
  const request = {
@@ -26445,7 +26502,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26445
26502
  stoppedAt: this._recorder.stoppedAt,
26446
26503
  };
26447
26504
  const response = await this._apiService.stopSession(this.sessionId, request);
26448
- _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);
26449
26506
  }
26450
26507
  this._clearSession();
26451
26508
  }
@@ -26486,7 +26543,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26486
26543
  this._stop();
26487
26544
  if (this.continuousRecording) {
26488
26545
  await this._apiService.stopContinuousDebugSession(this.sessionId);
26489
- 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;
26490
26547
  }
26491
26548
  else {
26492
26549
  await this._apiService.cancelSession(this.sessionId);
@@ -26510,7 +26567,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26510
26567
  * The function receives the click event as its parameter and
26511
26568
  * should return `false` to prevent the default button action,
26512
26569
  * or `true` (or nothing) to allow it.
26513
- */
26570
+ */
26514
26571
  set recordingButtonClickHandler(handler) {
26515
26572
  this._sessionWidget.buttonClickExternalHandler = handler;
26516
26573
  }
@@ -26546,11 +26603,12 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26546
26603
  ...(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
26547
26604
  ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {}),
26548
26605
  },
26606
+ userAttributes: this._userAttributes
26549
26607
  };
26550
26608
  const { state } = await this._apiService.checkRemoteSession(payload);
26551
26609
  if (state == 'START') {
26552
26610
  if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.started) {
26553
- 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);
26554
26612
  }
26555
26613
  }
26556
26614
  else if (state == 'STOP') {
@@ -26599,7 +26657,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26599
26657
  }
26600
26658
  _handleStart() {
26601
26659
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
26602
- 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);
26603
26661
  }
26604
26662
  }
26605
26663
  _handleStop(comment) {
@@ -26629,14 +26687,14 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26629
26687
  }
26630
26688
  _handleContinuousDebugging() {
26631
26689
  if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped) {
26632
- 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);
26633
26691
  }
26634
26692
  }
26635
26693
  /**
26636
26694
  * Register session limit reaching listeners for controlling session end
26637
26695
  */
26638
26696
  _registerSessionLimitReach() {
26639
- _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, () => {
26640
26698
  this._stop();
26641
26699
  this._clearSession();
26642
26700
  this._sessionWidget.handleUIReseting();
@@ -26646,7 +26704,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26646
26704
  * Register session auto creation listeners during continuous recording
26647
26705
  */
26648
26706
  _registerSessionAutoCreation() {
26649
- _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) => {
26650
26708
  var _a;
26651
26709
  if (!(payload === null || payload === void 0 ? void 0 : payload.data))
26652
26710
  return;
@@ -26660,6 +26718,18 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26660
26718
  }, 5000);
26661
26719
  });
26662
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
+ }
26663
26733
  /**
26664
26734
  * Create a new session and start it
26665
26735
  */
@@ -26670,6 +26740,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26670
26740
  const payload = {
26671
26741
  sessionAttributes: this.sessionAttributes,
26672
26742
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getNavigatorInfo)(),
26743
+ userAttributes: this._userAttributes,
26673
26744
  name: this.sessionAttributes.userName
26674
26745
  ? `${this.sessionAttributes.userName}'s session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now(), { month: 'short', day: 'numeric' })}`
26675
26746
  : `Session on ${(0,_utils__WEBPACK_IMPORTED_MODULE_2__.getFormattedDate)(Date.now())}`,
@@ -26681,8 +26752,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26681
26752
  : await this._apiService.startSession(request, signal);
26682
26753
  if (session) {
26683
26754
  session.sessionType = this.continuousRecording
26684
- ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_11__.SessionType.CONTINUOUS
26685
- : _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;
26686
26757
  this._setupSessionAndStart(session, false);
26687
26758
  }
26688
26759
  }
@@ -26690,7 +26761,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26690
26761
  this.error = error.message;
26691
26762
  this.sessionState = _types__WEBPACK_IMPORTED_MODULE_3__.SessionState.stopped;
26692
26763
  if (this.continuousRecording) {
26693
- 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;
26694
26765
  }
26695
26766
  }
26696
26767
  }
@@ -26705,7 +26776,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26705
26776
  this._recorder.start(this.sessionId, this.sessionType);
26706
26777
  this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType, });
26707
26778
  if (this.session) {
26708
- _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);
26709
26780
  this._recorder.subscribeToSession(this.session);
26710
26781
  this._sessionWidget.seconds = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.getTimeDifferenceInSeconds)((_a = this.session) === null || _a === void 0 ? void 0 : _a.startedAt);
26711
26782
  }
@@ -26831,6 +26902,10 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_14__.Obse
26831
26902
  return { errorInfo: String(errorInfo) };
26832
26903
  }
26833
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
+ }
26834
26909
  }
26835
26910
 
26836
26911
 
@@ -28158,6 +28233,25 @@ const getButtonTemplate = (button) => {
28158
28233
  };
28159
28234
 
28160
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
+
28161
28255
  /***/ }),
28162
28256
 
28163
28257
  /***/ "./src/types/index.ts":
@@ -28169,11 +28263,14 @@ const getButtonTemplate = (button) => {
28169
28263
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
28170
28264
  /* harmony export */ DebugSessionDataType: () => (/* reexport safe */ _session__WEBPACK_IMPORTED_MODULE_1__.DebugSessionDataType),
28171
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),
28172
28267
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _sessionRecorder__WEBPACK_IMPORTED_MODULE_2__.WidgetButtonPlacement)
28173
28268
  /* harmony export */ });
28174
28269
  /* harmony import */ var _widget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./widget */ "./src/types/widget.ts");
28175
28270
  /* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./session */ "./src/types/session.ts");
28176
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
+
28177
28274
 
28178
28275
 
28179
28276
 
@@ -48113,6 +48210,7 @@ var __webpack_exports__ = {};
48113
48210
  /* harmony export */ SessionRecorderTraceIdRatioBasedSampler: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_6__.SessionRecorderTraceIdRatioBasedSampler),
48114
48211
  /* harmony export */ SessionState: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.SessionState),
48115
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),
48116
48214
  /* harmony export */ WidgetButtonPlacement: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.WidgetButtonPlacement),
48117
48215
  /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
48118
48216
  /* harmony export */ recorderEventBus: () => (/* reexport safe */ _eventBus__WEBPACK_IMPORTED_MODULE_2__.recorderEventBus)
@@ -48207,9 +48305,10 @@ var __webpack_exports__SessionRecorderSdk = __webpack_exports__.SessionRecorderS
48207
48305
  var __webpack_exports__SessionRecorderTraceIdRatioBasedSampler = __webpack_exports__.SessionRecorderTraceIdRatioBasedSampler;
48208
48306
  var __webpack_exports__SessionState = __webpack_exports__.SessionState;
48209
48307
  var __webpack_exports__SessionType = __webpack_exports__.SessionType;
48308
+ var __webpack_exports__UserType = __webpack_exports__.UserType;
48210
48309
  var __webpack_exports__WidgetButtonPlacement = __webpack_exports__.WidgetButtonPlacement;
48211
48310
  var __webpack_exports__default = __webpack_exports__["default"];
48212
48311
  var __webpack_exports__recorderEventBus = __webpack_exports__.recorderEventBus;
48213
- 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 };
48214
48313
 
48215
48314
  //# sourceMappingURL=index.js.map