@multiplayer-app/session-recorder-browser 1.3.17-session-buffering.0 → 1.3.19

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 (40) hide show
  1. package/dist/browser/index.js +354 -269
  2. package/dist/exporters/index.js +1 -1
  3. package/dist/exporters/index.js.LICENSE.txt +6 -0
  4. package/dist/exporters/index.js.map +1 -1
  5. package/dist/index.js +352 -271
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.umd.js +352 -269
  8. package/dist/index.umd.js.map +1 -1
  9. package/dist/otel/CrashBufferSpanProcessor.d.ts +18 -0
  10. package/dist/otel/CrashBufferSpanProcessor.d.ts.map +1 -0
  11. package/dist/otel/CrashBufferSpanProcessor.js +42 -0
  12. package/dist/otel/CrashBufferSpanProcessor.js.map +1 -0
  13. package/dist/otel/index.d.ts +7 -5
  14. package/dist/otel/index.d.ts.map +1 -1
  15. package/dist/otel/index.js +36 -83
  16. package/dist/otel/index.js.map +1 -1
  17. package/dist/rrweb/index.d.ts +2 -2
  18. package/dist/rrweb/index.d.ts.map +1 -1
  19. package/dist/rrweb/index.js +11 -7
  20. package/dist/rrweb/index.js.map +1 -1
  21. package/dist/services/api.service.d.ts +22 -0
  22. package/dist/services/api.service.d.ts.map +1 -1
  23. package/dist/services/api.service.js +22 -5
  24. package/dist/services/api.service.js.map +1 -1
  25. package/dist/services/crashBuffer.service.d.ts +10 -35
  26. package/dist/services/crashBuffer.service.d.ts.map +1 -1
  27. package/dist/services/crashBuffer.service.js +66 -20
  28. package/dist/services/crashBuffer.service.js.map +1 -1
  29. package/dist/services/indexedDb.service.d.ts +3 -3
  30. package/dist/services/indexedDb.service.d.ts.map +1 -1
  31. package/dist/services/indexedDb.service.js +24 -21
  32. package/dist/services/indexedDb.service.js.map +1 -1
  33. package/dist/session-recorder.d.ts +4 -4
  34. package/dist/session-recorder.d.ts.map +1 -1
  35. package/dist/session-recorder.js +83 -86
  36. package/dist/session-recorder.js.map +1 -1
  37. package/dist/types/session-recorder.d.ts +6 -13
  38. package/dist/types/session-recorder.d.ts.map +1 -1
  39. package/dist/types/session-recorder.js.map +1 -1
  40. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -24152,7 +24152,7 @@ const CONTINUOUS_DEBUGGING_TIMEOUT = 60000; // 1 minutes
24152
24152
  const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30; // TODO: move to shared config otel core
24153
24153
  const REMOTE_SESSION_RECORDING_START = 'remote-session-recording:start';
24154
24154
  const REMOTE_SESSION_RECORDING_STOP = 'remote-session-recording:stop';
24155
- const PACKAGE_VERSION_EXPORT = "1.3.17-session-buffering.0" || 0;
24155
+ const PACKAGE_VERSION_EXPORT = "1.3.19" || 0;
24156
24156
  // Regex patterns for OpenTelemetry ignore URLs
24157
24157
  const OTEL_IGNORE_URLS = [
24158
24158
  // Traces endpoint
@@ -24798,6 +24798,62 @@ class NavigationRecorder {
24798
24798
 
24799
24799
 
24800
24800
 
24801
+ /***/ }),
24802
+
24803
+ /***/ "./src/otel/CrashBufferSpanProcessor.ts":
24804
+ /*!**********************************************!*\
24805
+ !*** ./src/otel/CrashBufferSpanProcessor.ts ***!
24806
+ \**********************************************/
24807
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
24808
+
24809
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
24810
+ /* harmony export */ CrashBufferSpanProcessor: () => (/* binding */ CrashBufferSpanProcessor)
24811
+ /* harmony export */ });
24812
+ /* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js");
24813
+ /* harmony import */ var _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @multiplayer-app/session-recorder-common */ "../session-recorder-common/dist/esm/index-browser.js");
24814
+
24815
+
24816
+ /**
24817
+ * Implementation of the {@link SpanProcessor} that batches spans exported by
24818
+ * the SDK then pushes them to the exporter pipeline.
24819
+ */
24820
+ class CrashBufferSpanProcessor {
24821
+ constructor(_exporter, _crashBuffer, _serializeSpan) {
24822
+ this._exporter = _exporter;
24823
+ this._crashBuffer = _crashBuffer;
24824
+ this._serializeSpan = _serializeSpan;
24825
+ }
24826
+ forceFlush() {
24827
+ return this._exporter.forceFlush();
24828
+ }
24829
+ onStart(_span, _parentContext) {
24830
+ return this._exporter.onStart(_span, _parentContext);
24831
+ }
24832
+ onEnd(span) {
24833
+ const traceId = span.spanContext().traceId;
24834
+ if ((span.spanContext().traceFlags & _opentelemetry_api__WEBPACK_IMPORTED_MODULE_1__.TraceFlags.SAMPLED) === 0) {
24835
+ return;
24836
+ }
24837
+ if (traceId.startsWith(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX) ||
24838
+ traceId.startsWith(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX)) {
24839
+ if (this._crashBuffer) {
24840
+ this._crashBuffer.appendSpans([
24841
+ {
24842
+ ts: span.startTime[0] * 1000 + span.startTime[1] / 1000000,
24843
+ span: this._serializeSpan(span)
24844
+ }
24845
+ ]);
24846
+ }
24847
+ return;
24848
+ }
24849
+ this._exporter.onEnd(span);
24850
+ }
24851
+ shutdown() {
24852
+ return this._exporter.shutdown();
24853
+ }
24854
+ }
24855
+
24856
+
24801
24857
  /***/ }),
24802
24858
 
24803
24859
  /***/ "./src/otel/helpers.ts":
@@ -25036,19 +25092,21 @@ const getElementTextContent = (element) => {
25036
25092
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25037
25093
  /* harmony export */ TracerBrowserSDK: () => (/* binding */ TracerBrowserSDK)
25038
25094
  /* harmony export */ });
25039
- /* harmony import */ var _opentelemetry_resources__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @opentelemetry/resources */ "../../node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js");
25040
- /* harmony import */ var _opentelemetry_core__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @opentelemetry/core */ "../../node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js");
25041
- /* harmony import */ var _opentelemetry_sdk_trace_web__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @opentelemetry/sdk-trace-web */ "../../node_modules/@opentelemetry/sdk-trace-web/build/esm/WebTracerProvider.js");
25042
- /* harmony import */ var _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @opentelemetry/sdk-trace-base */ "../../node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.js");
25043
- /* harmony import */ var _opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @opentelemetry/semantic-conventions */ "../../node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js");
25044
- /* harmony import */ var _opentelemetry_instrumentation__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @opentelemetry/instrumentation */ "../../node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js");
25095
+ /* harmony import */ var _opentelemetry_resources__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @opentelemetry/resources */ "../../node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js");
25096
+ /* harmony import */ var _opentelemetry_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @opentelemetry/core */ "../../node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js");
25097
+ /* harmony import */ var _opentelemetry_sdk_trace_web__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @opentelemetry/sdk-trace-web */ "../../node_modules/@opentelemetry/sdk-trace-web/build/esm/WebTracerProvider.js");
25098
+ /* harmony import */ var _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @opentelemetry/sdk-trace-base */ "../../node_modules/@opentelemetry/sdk-trace-base/build/esm/platform/browser/export/BatchSpanProcessor.js");
25099
+ /* harmony import */ var _opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @opentelemetry/semantic-conventions */ "../../node_modules/@opentelemetry/semantic-conventions/build/esm/resource/SemanticResourceAttributes.js");
25100
+ /* harmony import */ var _opentelemetry_instrumentation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @opentelemetry/instrumentation */ "../../node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js");
25045
25101
  /* harmony import */ var _opentelemetry_auto_instrumentations_web__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @opentelemetry/auto-instrumentations-web */ "../../node_modules/@opentelemetry/auto-instrumentations-web/build/esm/index.js");
25046
25102
  /* harmony import */ var _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @multiplayer-app/session-recorder-common */ "../session-recorder-common/dist/esm/index-browser.js");
25047
- /* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace-api.js");
25048
- /* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/context-api.js");
25049
- /* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/status.js");
25103
+ /* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace-api.js");
25104
+ /* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/context-api.js");
25105
+ /* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/status.js");
25050
25106
  /* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
25051
25107
  /* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ "./src/otel/helpers.ts");
25108
+ /* harmony import */ var _CrashBufferSpanProcessor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CrashBufferSpanProcessor */ "./src/otel/CrashBufferSpanProcessor.ts");
25109
+
25052
25110
 
25053
25111
 
25054
25112
 
@@ -25062,8 +25120,8 @@ const getElementTextContent = (element) => {
25062
25120
 
25063
25121
  class TracerBrowserSDK {
25064
25122
  constructor() {
25065
- this.sessionId = '';
25066
25123
  this.clientId = '';
25124
+ this.sessionId = '';
25067
25125
  this.globalErrorListenersRegistered = false;
25068
25126
  }
25069
25127
  setSessionId(sessionId, sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionType.MANUAL) {
@@ -25081,36 +25139,33 @@ class TracerBrowserSDK {
25081
25139
  this.exporter = new _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionRecorderBrowserTraceExporter({
25082
25140
  apiKey: options.apiKey,
25083
25141
  url: (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getExporterEndpoint)(options.exporterEndpoint),
25084
- usePostMessageFallback: options.usePostMessageFallback,
25142
+ usePostMessageFallback: options.usePostMessageFallback
25085
25143
  });
25086
- this.tracerProvider = new _opentelemetry_sdk_trace_web__WEBPACK_IMPORTED_MODULE_4__.WebTracerProvider({
25087
- resource: (0,_opentelemetry_resources__WEBPACK_IMPORTED_MODULE_5__.resourceFromAttributes)({
25088
- [_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_6__.SEMRESATTRS_SERVICE_NAME]: application,
25089
- [_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_6__.SEMRESATTRS_SERVICE_VERSION]: version,
25090
- [_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_6__.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: environment,
25144
+ this.batchSpanProcessor = new _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_5__.BatchSpanProcessor(this.exporter);
25145
+ this.tracerProvider = new _opentelemetry_sdk_trace_web__WEBPACK_IMPORTED_MODULE_6__.WebTracerProvider({
25146
+ resource: (0,_opentelemetry_resources__WEBPACK_IMPORTED_MODULE_7__.resourceFromAttributes)({
25147
+ [_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_SERVICE_NAME]: application,
25148
+ [_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_SERVICE_VERSION]: version,
25149
+ [_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: environment
25091
25150
  }),
25092
25151
  idGenerator: this.idGenerator,
25093
25152
  sampler: new _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionRecorderTraceIdRatioBasedSampler(this.config.sampleTraceRatio),
25094
25153
  spanProcessors: [
25095
25154
  this._getSpanSessionIdProcessor(),
25096
- this._getCrashBufferSpanProcessor(),
25097
- new _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_7__.BatchSpanProcessor(this.exporter),
25098
- ],
25155
+ new _CrashBufferSpanProcessor__WEBPACK_IMPORTED_MODULE_4__.CrashBufferSpanProcessor(this.batchSpanProcessor, this.crashBuffer, this.exporter.serializeSpan.bind(this.exporter))
25156
+ ]
25099
25157
  });
25100
25158
  this.tracerProvider.register({
25101
25159
  // contextManager: new ZoneContextManager(),
25102
- propagator: new _opentelemetry_core__WEBPACK_IMPORTED_MODULE_8__.W3CTraceContextPropagator(),
25160
+ propagator: new _opentelemetry_core__WEBPACK_IMPORTED_MODULE_9__.W3CTraceContextPropagator()
25103
25161
  });
25104
- (0,_opentelemetry_instrumentation__WEBPACK_IMPORTED_MODULE_9__.registerInstrumentations)({
25162
+ (0,_opentelemetry_instrumentation__WEBPACK_IMPORTED_MODULE_10__.registerInstrumentations)({
25105
25163
  tracerProvider: this.tracerProvider,
25106
25164
  instrumentations: [
25107
25165
  (0,_opentelemetry_auto_instrumentations_web__WEBPACK_IMPORTED_MODULE_0__.getWebAutoInstrumentations)({
25108
25166
  '@opentelemetry/instrumentation-xml-http-request': {
25109
25167
  clearTimingResources: true,
25110
- ignoreUrls: [
25111
- ..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS,
25112
- ...(this.config.ignoreUrls || []),
25113
- ],
25168
+ ignoreUrls: [..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS, ...(this.config.ignoreUrls || [])],
25114
25169
  propagateTraceHeaderCorsUrls: options.propagateTraceHeaderCorsUrls,
25115
25170
  applyCustomAttributesOnSpan: (span, xhr) => {
25116
25171
  if (!this.config)
@@ -25130,7 +25185,7 @@ class TracerBrowserSDK {
25130
25185
  requestBody,
25131
25186
  responseBody,
25132
25187
  requestHeaders,
25133
- responseHeaders,
25188
+ responseHeaders
25134
25189
  };
25135
25190
  (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.processHttpPayload)(payload, this.config, span);
25136
25191
  }
@@ -25138,14 +25193,11 @@ class TracerBrowserSDK {
25138
25193
  // eslint-disable-next-line
25139
25194
  console.error('[MULTIPLAYER_SESSION_RECORDER] Failed to capture xml-http payload', error);
25140
25195
  }
25141
- },
25196
+ }
25142
25197
  },
25143
25198
  '@opentelemetry/instrumentation-fetch': {
25144
25199
  clearTimingResources: true,
25145
- ignoreUrls: [
25146
- ..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS,
25147
- ...(this.config.ignoreUrls || []),
25148
- ],
25200
+ ignoreUrls: [..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS, ...(this.config.ignoreUrls || [])],
25149
25201
  propagateTraceHeaderCorsUrls: options.propagateTraceHeaderCorsUrls,
25150
25202
  applyCustomAttributesOnSpan: async (span, request, response) => {
25151
25203
  if (!this.config)
@@ -25182,7 +25234,7 @@ class TracerBrowserSDK {
25182
25234
  requestBody,
25183
25235
  responseBody,
25184
25236
  requestHeaders,
25185
- responseHeaders,
25237
+ responseHeaders
25186
25238
  };
25187
25239
  (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.processHttpPayload)(payload, this.config, span);
25188
25240
  }
@@ -25190,7 +25242,7 @@ class TracerBrowserSDK {
25190
25242
  // eslint-disable-next-line
25191
25243
  console.error('[MULTIPLAYER_SESSION_RECORDER] Failed to capture fetch payload', error);
25192
25244
  }
25193
- },
25245
+ }
25194
25246
  },
25195
25247
  '@opentelemetry/instrumentation-user-interaction': {
25196
25248
  shouldPreventSpanCreation: (_event, element, span) => {
@@ -25199,71 +25251,20 @@ class TracerBrowserSDK {
25199
25251
  }
25200
25252
  span.setAttribute('target.innerText', (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getElementInnerText)(element));
25201
25253
  span.setAttribute('target.textContent', (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getElementTextContent)(element));
25202
- Array.from(element.attributes).forEach(attribute => {
25254
+ Array.from(element.attributes).forEach((attribute) => {
25203
25255
  span.setAttribute(`target.attribute.${attribute.name}`, attribute.value);
25204
25256
  });
25205
25257
  return false;
25206
- },
25207
- },
25208
- }),
25209
- ],
25258
+ }
25259
+ }
25260
+ })
25261
+ ]
25210
25262
  });
25211
25263
  this._registerGlobalErrorListeners();
25212
25264
  }
25213
25265
  setCrashBuffer(crashBuffer) {
25214
25266
  this.crashBuffer = crashBuffer;
25215
25267
  }
25216
- _getCrashBufferSpanProcessor() {
25217
- return {
25218
- onStart: () => { },
25219
- onEnd: (span) => {
25220
- // Only buffer spans when we don't have an active debug session.
25221
- if (this.sessionId)
25222
- return;
25223
- if (!this.crashBuffer)
25224
- return;
25225
- try {
25226
- const now = Date.now();
25227
- this.crashBuffer.appendOtelSpan({
25228
- ts: now,
25229
- span: this._serializeSpan(span),
25230
- });
25231
- }
25232
- catch (_e) {
25233
- // ignore
25234
- }
25235
- },
25236
- shutdown: () => Promise.resolve(),
25237
- forceFlush: () => Promise.resolve(),
25238
- };
25239
- }
25240
- _serializeSpan(span) {
25241
- var _a, _b;
25242
- const spanContext = ((_a = span === null || span === void 0 ? void 0 : span.spanContext) === null || _a === void 0 ? void 0 : _a.call(span))
25243
- ? span.spanContext()
25244
- : span === null || span === void 0 ? void 0 : span._spanContext;
25245
- return {
25246
- _spanContext: spanContext,
25247
- name: span === null || span === void 0 ? void 0 : span.name,
25248
- kind: span === null || span === void 0 ? void 0 : span.kind,
25249
- links: span === null || span === void 0 ? void 0 : span.links,
25250
- ended: span === null || span === void 0 ? void 0 : span.ended,
25251
- events: span === null || span === void 0 ? void 0 : span.events,
25252
- status: span === null || span === void 0 ? void 0 : span.status,
25253
- endTime: span === null || span === void 0 ? void 0 : span.endTime,
25254
- startTime: span === null || span === void 0 ? void 0 : span.startTime,
25255
- duration: span === null || span === void 0 ? void 0 : span.duration,
25256
- attributes: span === null || span === void 0 ? void 0 : span.attributes,
25257
- parentSpanId: (_b = span === null || span === void 0 ? void 0 : span.parentSpanContext) === null || _b === void 0 ? void 0 : _b.spanId,
25258
- droppedAttributesCount: span === null || span === void 0 ? void 0 : span.droppedAttributesCount,
25259
- droppedEventsCount: span === null || span === void 0 ? void 0 : span.droppedEventsCount,
25260
- droppedLinksCount: span === null || span === void 0 ? void 0 : span.droppedLinksCount,
25261
- resource: (span === null || span === void 0 ? void 0 : span.resource) ? {
25262
- attributes: span.resource.attributes,
25263
- asyncAttributesPending: span.resource.asyncAttributesPending,
25264
- } : undefined,
25265
- };
25266
- }
25267
25268
  start(sessionId, sessionType) {
25268
25269
  if (!this.tracerProvider) {
25269
25270
  throw new Error('Configuration not initialized. Call init() before start().');
@@ -25288,13 +25289,15 @@ class TracerBrowserSDK {
25288
25289
  * Otherwise, a short-lived span will be created to hold the exception event.
25289
25290
  */
25290
25291
  captureException(error, errorInfo) {
25292
+ var _a, _b;
25291
25293
  if (!error)
25292
25294
  return;
25293
25295
  // Prefer attaching to the active span to keep correlation intact
25294
25296
  try {
25295
- const activeSpan = _opentelemetry_api__WEBPACK_IMPORTED_MODULE_10__.trace.getSpan(_opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__.context.active());
25297
+ const activeSpan = _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__.trace.getSpan(_opentelemetry_api__WEBPACK_IMPORTED_MODULE_12__.context.active());
25296
25298
  if (activeSpan) {
25297
25299
  this._recordException(activeSpan, error, errorInfo);
25300
+ (_a = this.tracerProvider) === null || _a === void 0 ? void 0 : _a.forceFlush();
25298
25301
  return;
25299
25302
  }
25300
25303
  // eslint-disable-next-line
@@ -25302,17 +25305,26 @@ class TracerBrowserSDK {
25302
25305
  catch (_ignored) { }
25303
25306
  // Fallback: create a short-lived span to hold the exception details
25304
25307
  try {
25305
- const tracer = _opentelemetry_api__WEBPACK_IMPORTED_MODULE_10__.trace.getTracer('exception');
25308
+ const tracer = _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__.trace.getTracer('exception');
25306
25309
  const span = tracer.startSpan(error.name || 'Error');
25307
25310
  this._recordException(span, error, errorInfo);
25308
25311
  span.end();
25312
+ (_b = this.tracerProvider) === null || _b === void 0 ? void 0 : _b.forceFlush();
25309
25313
  // eslint-disable-next-line
25310
25314
  }
25311
25315
  catch (_ignored) { }
25312
25316
  }
25317
+ async exportTraces(spans) {
25318
+ var _a;
25319
+ if ((_a = this === null || this === void 0 ? void 0 : this.batchSpanProcessor) === null || _a === void 0 ? void 0 : _a.onEnd) {
25320
+ spans.map((span) => { var _a; return (_a = this === null || this === void 0 ? void 0 : this.batchSpanProcessor) === null || _a === void 0 ? void 0 : _a.onEnd(span); });
25321
+ // return this.batchSpanProcessor.onEnd()
25322
+ }
25323
+ throw new Error('Buffer span processor not initialized');
25324
+ }
25313
25325
  _recordException(span, error, errorInfo) {
25314
25326
  span.recordException(error);
25315
- span.setStatus({ code: _opentelemetry_api__WEBPACK_IMPORTED_MODULE_12__.SpanStatusCode.ERROR, message: error.message });
25327
+ span.setStatus({ code: _opentelemetry_api__WEBPACK_IMPORTED_MODULE_13__.SpanStatusCode.ERROR, message: error.message });
25316
25328
  span.setAttribute('exception.type', error.name || 'Error');
25317
25329
  span.setAttribute('exception.message', error.message);
25318
25330
  span.setAttribute('exception.stacktrace', error.stack || '');
@@ -25325,14 +25337,14 @@ class TracerBrowserSDK {
25325
25337
  _getSpanSessionIdProcessor() {
25326
25338
  return {
25327
25339
  forceFlush: () => Promise.resolve(),
25328
- onEnd: () => { },
25340
+ onEnd: () => Promise.resolve(),
25329
25341
  shutdown: () => Promise.resolve(),
25330
25342
  onStart: (span) => {
25331
25343
  var _a;
25332
25344
  if ((_a = this.sessionId) === null || _a === void 0 ? void 0 : _a.length) {
25333
25345
  span.setAttribute(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.ATTR_MULTIPLAYER_SESSION_ID, this.sessionId);
25334
25346
  }
25335
- },
25347
+ }
25336
25348
  };
25337
25349
  }
25338
25350
  _registerGlobalErrorListeners() {
@@ -25342,14 +25354,12 @@ class TracerBrowserSDK {
25342
25354
  return;
25343
25355
  // eslint-disable-next-line
25344
25356
  const errorHandler = (event) => {
25345
- const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error
25346
- ? event.error
25347
- : new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
25357
+ const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error ? event.error : new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
25348
25358
  this.captureException(err);
25349
25359
  };
25350
25360
  // eslint-disable-next-line
25351
25361
  const rejectionHandler = (event) => {
25352
- const reason = (event && 'reason' in event) ? event.reason : undefined;
25362
+ const reason = event && 'reason' in event ? event.reason : undefined;
25353
25363
  const err = reason instanceof Error
25354
25364
  ? reason
25355
25365
  : new Error(typeof reason === 'string' ? reason : 'Unhandled promise rejection');
@@ -25792,7 +25802,7 @@ class RecorderBrowserSDK {
25792
25802
  constructor() {
25793
25803
  this.intervals = {
25794
25804
  restart: null,
25795
- bufferSnapshot: null,
25805
+ bufferSnapshot: null
25796
25806
  };
25797
25807
  this.startedAt = '';
25798
25808
  this.stoppedAt = '';
@@ -25801,6 +25811,9 @@ class RecorderBrowserSDK {
25801
25811
  * Full snapshot.
25802
25812
  */
25803
25813
  takeFullSnapshot() {
25814
+ if (!this.stopFn) {
25815
+ return;
25816
+ }
25804
25817
  rrweb__WEBPACK_IMPORTED_MODULE_6__.record.takeFullSnapshot();
25805
25818
  }
25806
25819
  /**
@@ -25831,7 +25844,7 @@ class RecorderBrowserSDK {
25831
25844
  return;
25832
25845
  }
25833
25846
  this._handleLiveSessionEvent(event, ts, sessionId, sessionType);
25834
- },
25847
+ }
25835
25848
  });
25836
25849
  this.takeFullSnapshot();
25837
25850
  this._setupPeriodicSnapshots(sessionId, sessionType);
@@ -25855,6 +25868,7 @@ class RecorderBrowserSDK {
25855
25868
  stop() {
25856
25869
  var _a, _b, _c;
25857
25870
  (_a = this.stopFn) === null || _a === void 0 ? void 0 : _a.call(this);
25871
+ this.stopFn = undefined;
25858
25872
  if (!((_b = this.config) === null || _b === void 0 ? void 0 : _b.useWebsocket)) {
25859
25873
  (_c = this.socketService) === null || _c === void 0 ? void 0 : _c.close();
25860
25874
  }
@@ -25901,14 +25915,14 @@ class RecorderBrowserSDK {
25901
25915
  this._applyConsoleMasking(event);
25902
25916
  const packedEvent = (0,_rrweb_packer__WEBPACK_IMPORTED_MODULE_0__.pack)(event);
25903
25917
  this.stoppedAt = new Date(ts).toISOString();
25904
- await this.crashBuffer.appendRrwebEvent({
25918
+ await this.crashBuffer.appendEvent({
25905
25919
  ts,
25906
25920
  isFullSnapshot: event.type === _rrweb_types__WEBPACK_IMPORTED_MODULE_1__.EventType.FullSnapshot,
25907
25921
  event: {
25908
25922
  event: packedEvent,
25909
25923
  eventType: event.type,
25910
- timestamp: ts,
25911
- },
25924
+ timestamp: ts
25925
+ }
25912
25926
  });
25913
25927
  }
25914
25928
  catch (error) {
@@ -25933,7 +25947,7 @@ class RecorderBrowserSDK {
25933
25947
  eventType: event.type,
25934
25948
  timestamp: ts,
25935
25949
  debugSessionId: sessionId,
25936
- debugSessionType: sessionType,
25950
+ debugSessionType: sessionType
25937
25951
  });
25938
25952
  }
25939
25953
  /**
@@ -25947,7 +25961,7 @@ class RecorderBrowserSDK {
25947
25961
  sampling: { canvas: 5 },
25948
25962
  recordCanvas: (_c = this.config) === null || _c === void 0 ? void 0 : _c.recordCanvas,
25949
25963
  dataURLOptions: { type: 'image/webp', quality: 0.1 },
25950
- plugins: [(0,_rrweb_rrweb_plugin_console_record__WEBPACK_IMPORTED_MODULE_3__.getRecordConsolePlugin)({ level: ['log', 'error'] })],
25964
+ plugins: [(0,_rrweb_rrweb_plugin_console_record__WEBPACK_IMPORTED_MODULE_3__.getRecordConsolePlugin)({ level: ['log', 'error'] })]
25951
25965
  };
25952
25966
  if (maskingConfig.maskInputOptions) {
25953
25967
  options.maskInputOptions = maskingConfig.maskInputOptions;
@@ -26007,7 +26021,7 @@ class ApiService {
26007
26021
  this.config = {
26008
26022
  apiKey: '',
26009
26023
  apiBaseUrl: '',
26010
- exporterEndpoint: '',
26024
+ exporterEndpoint: ''
26011
26025
  };
26012
26026
  }
26013
26027
  /**
@@ -26017,7 +26031,7 @@ class ApiService {
26017
26031
  init(config) {
26018
26032
  this.config = {
26019
26033
  ...this.config,
26020
- ...config,
26034
+ ...config
26021
26035
  };
26022
26036
  }
26023
26037
  /**
@@ -26035,6 +26049,14 @@ class ApiService {
26035
26049
  async startSession(request, signal) {
26036
26050
  return this.makeRequest('/debug-sessions/start', 'POST', request, signal);
26037
26051
  }
26052
+ /**
26053
+ * Create a new error span session
26054
+ * @param request - Session create error span request data
26055
+ * @param signal - Optional AbortSignal for request cancellation
26056
+ */
26057
+ async createErrorSession(request, signal) {
26058
+ return this.makeRequest('/debug-sessions/error-span/start', 'POST', request, signal);
26059
+ }
26038
26060
  /**
26039
26061
  * Stop an active debug session
26040
26062
  * @param sessionId - ID of the session to stop
@@ -26080,6 +26102,15 @@ class ApiService {
26080
26102
  async checkRemoteSession(requestBody, signal) {
26081
26103
  return this.makeRequest('/remote-debug-session/check', 'POST', requestBody, signal);
26082
26104
  }
26105
+ updateSessionAttributes(sessionId, requestBody, signal) {
26106
+ return this.makeRequest(`/debug-sessions/${sessionId}`, 'PATCH', requestBody, signal);
26107
+ }
26108
+ /**
26109
+ * Export events to the session debugger API
26110
+ */
26111
+ async exportEvents(sessionId, requestBody, signal) {
26112
+ return this.makeRequest(`/debug-sessions/${sessionId}/rrweb-events`, 'POST', requestBody, signal);
26113
+ }
26083
26114
  /**
26084
26115
  * Make a request to the session debugger API
26085
26116
  * @param path - API endpoint path (relative to the base URL)
@@ -26094,14 +26125,14 @@ class ApiService {
26094
26125
  body: body ? JSON.stringify(body) : null,
26095
26126
  headers: {
26096
26127
  'Content-Type': 'application/json',
26097
- ...(this.config.apiKey && { 'X-Api-Key': this.config.apiKey }),
26098
- },
26128
+ ...(this.config.apiKey && { 'X-Api-Key': this.config.apiKey })
26129
+ }
26099
26130
  };
26100
26131
  try {
26101
26132
  const response = await fetch(url, {
26102
26133
  ...params,
26103
26134
  credentials: 'include',
26104
- signal,
26135
+ signal
26105
26136
  });
26106
26137
  if (!response.ok) {
26107
26138
  throw new Error('Network response was not ok: ' + response.statusText);
@@ -26146,6 +26177,8 @@ class ApiService {
26146
26177
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
26147
26178
  /* harmony export */ CrashBufferService: () => (/* binding */ CrashBufferService)
26148
26179
  /* harmony export */ });
26180
+ /* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/status.js");
26181
+
26149
26182
  class CrashBufferService {
26150
26183
  constructor(db, tabId, windowMs) {
26151
26184
  this.db = db;
@@ -26158,6 +26191,7 @@ class CrashBufferService {
26158
26191
  this.lastSeenEventTs = 0;
26159
26192
  this.requiresFullSnapshot = true;
26160
26193
  this.lastTouchAt = 0;
26194
+ this.listeners = new Map();
26161
26195
  }
26162
26196
  async _safe(fn, fallback) {
26163
26197
  try {
@@ -26171,11 +26205,11 @@ class CrashBufferService {
26171
26205
  await this._safe(async () => {
26172
26206
  await this.db.setAttrs({
26173
26207
  tabId: this.tabId,
26174
- ...attrs,
26208
+ ...attrs
26175
26209
  });
26176
26210
  }, undefined);
26177
26211
  }
26178
- async appendRrwebEvent(payload) {
26212
+ async appendEvent(payload, _windowMs) {
26179
26213
  this.lastSeenEventTs = Math.max(this.lastSeenEventTs, payload.ts || 0);
26180
26214
  if (!this.isActive)
26181
26215
  return;
@@ -26185,11 +26219,11 @@ class CrashBufferService {
26185
26219
  return;
26186
26220
  }
26187
26221
  await this._safe(async () => {
26188
- await this.db.appendRrwebEvent({
26222
+ await this.db.appendEvent({
26189
26223
  tabId: this.tabId,
26190
26224
  ts: payload.ts,
26191
26225
  isFullSnapshot: payload.isFullSnapshot,
26192
- event: payload.event,
26226
+ event: payload.event
26193
26227
  });
26194
26228
  }, undefined);
26195
26229
  if (isFullSnapshot && this.requiresFullSnapshot) {
@@ -26203,20 +26237,61 @@ class CrashBufferService {
26203
26237
  }
26204
26238
  this.pruneSoon();
26205
26239
  }
26206
- async appendOtelSpan(payload) {
26207
- this.lastSeenEventTs = Math.max(this.lastSeenEventTs, payload.ts || 0);
26240
+ async appendSpans(payload, _windowMs) {
26241
+ for (const p of payload) {
26242
+ this.lastSeenEventTs = Math.max(this.lastSeenEventTs, p.ts || 0);
26243
+ }
26208
26244
  if (!this.isActive)
26209
26245
  return;
26246
+ let errorEvent = null;
26210
26247
  await this._safe(async () => {
26211
- await this.db.appendOtelSpan({
26212
- tabId: this.tabId,
26213
- ts: payload.ts,
26214
- span: payload.span,
26248
+ const records = payload.map((p) => {
26249
+ var _a, _b;
26250
+ if (!errorEvent && ((_b = (_a = p === null || p === void 0 ? void 0 : p.span) === null || _a === void 0 ? void 0 : _a.status) === null || _b === void 0 ? void 0 : _b.code) === _opentelemetry_api__WEBPACK_IMPORTED_MODULE_0__.SpanStatusCode.ERROR) {
26251
+ errorEvent = { ts: p.ts, span: p.span };
26252
+ }
26253
+ return {
26254
+ tabId: this.tabId,
26255
+ ts: p.ts,
26256
+ span: p.span
26257
+ };
26215
26258
  });
26259
+ await this.db.appendSpans(records);
26216
26260
  }, undefined);
26217
26261
  this.pruneSoon();
26262
+ if (errorEvent) {
26263
+ this._emit('error-span-appended', errorEvent);
26264
+ }
26265
+ }
26266
+ on(event, listener) {
26267
+ const set = this.listeners.get(event) || new Set();
26268
+ set.add(listener);
26269
+ this.listeners.set(event, set);
26270
+ return () => this.off(event, listener);
26271
+ }
26272
+ off(event, listener) {
26273
+ const set = this.listeners.get(event);
26274
+ if (!set)
26275
+ return;
26276
+ set.delete(listener);
26277
+ if (set.size === 0)
26278
+ this.listeners.delete(event);
26279
+ }
26280
+ _emit(event, payload) {
26281
+ const set = this.listeners.get(event);
26282
+ if (!set || set.size === 0)
26283
+ return;
26284
+ for (const fn of Array.from(set)) {
26285
+ try {
26286
+ ;
26287
+ fn(payload);
26288
+ }
26289
+ catch (_e) {
26290
+ // never throw into app code
26291
+ }
26292
+ }
26218
26293
  }
26219
- async snapshot(now = Date.now()) {
26294
+ async snapshot(_windowMs, now = Date.now()) {
26220
26295
  const toTs = now;
26221
26296
  const fromTs = Math.max(0, toTs - this.windowMs);
26222
26297
  // Always include a full snapshot "anchor" if one exists at/before the window start.
@@ -26227,7 +26302,7 @@ class CrashBufferService {
26227
26302
  const [rrweb, spans, attrs] = await Promise.all([
26228
26303
  this._safe(() => this.db.getRrwebEventsWindow(this.tabId, rrwebFromTs, toTs), []),
26229
26304
  this._safe(() => this.db.getOtelSpansWindow(this.tabId, fromTs, toTs), []),
26230
- this._safe(() => this.db.getAttrs(this.tabId), null),
26305
+ this._safe(() => this.db.getAttrs(this.tabId), null)
26231
26306
  ]);
26232
26307
  const rrwebSorted = rrweb
26233
26308
  .sort((a, b) => a.ts - b.ts)
@@ -26244,14 +26319,16 @@ class CrashBufferService {
26244
26319
  return {
26245
26320
  rrwebEvents,
26246
26321
  otelSpans,
26247
- attrs: attrs ? {
26248
- sessionAttributes: attrs.sessionAttributes,
26249
- resourceAttributes: attrs.resourceAttributes,
26250
- userAttributes: attrs.userAttributes,
26251
- } : null,
26322
+ attrs: attrs
26323
+ ? {
26324
+ sessionAttributes: attrs.sessionAttributes,
26325
+ resourceAttributes: attrs.resourceAttributes,
26326
+ userAttributes: attrs.userAttributes
26327
+ }
26328
+ : null,
26252
26329
  windowMs: this.windowMs,
26253
26330
  fromTs: replayStartTs,
26254
- toTs,
26331
+ toTs
26255
26332
  };
26256
26333
  }
26257
26334
  async clear() {
@@ -26302,8 +26379,9 @@ class CrashBufferService {
26302
26379
  this.lastTouchAt = now;
26303
26380
  void this._safe(() => this.db.touchTab(this.tabId, now), undefined);
26304
26381
  }
26305
- this.pruneInFlight = this._safe(() => this.db.pruneOlderThanWithRrwebSnapshotAnchor(this.tabId, cutoff), undefined)
26306
- .finally(() => { this.pruneInFlight = null; });
26382
+ this.pruneInFlight = this._safe(() => this.db.pruneOlderThanWithRrwebSnapshotAnchor(this.tabId, cutoff), undefined).finally(() => {
26383
+ this.pruneInFlight = null;
26384
+ });
26307
26385
  }
26308
26386
  }
26309
26387
 
@@ -26355,7 +26433,7 @@ class IndexedDBService {
26355
26433
  });
26356
26434
  }
26357
26435
  /**
26358
- * @deprecated Prefer `appendRrwebEvent(tabId, ...)` and `getRrwebEventsWindow(...)`.
26436
+ * @deprecated Prefer `appendEvent(tabId, ...)` and `getRrwebEventsWindow(...)`.
26359
26437
  * This writes into the legacy store with no pruning semantics.
26360
26438
  */
26361
26439
  async saveEvent(event) {
@@ -26402,7 +26480,7 @@ class IndexedDBService {
26402
26480
  const db = await this.dbPromise;
26403
26481
  const payload = {
26404
26482
  ...attrs,
26405
- updatedAt: (_a = attrs.updatedAt) !== null && _a !== void 0 ? _a : Date.now(),
26483
+ updatedAt: (_a = attrs.updatedAt) !== null && _a !== void 0 ? _a : Date.now()
26406
26484
  };
26407
26485
  return new Promise((resolve, reject) => {
26408
26486
  const tx = db.transaction(attrsStore, 'readwrite');
@@ -26440,9 +26518,7 @@ class IndexedDBService {
26440
26518
  const getReq = store.get(tabId);
26441
26519
  getReq.onsuccess = () => {
26442
26520
  const existing = (getReq.result || null);
26443
- const next = existing
26444
- ? { ...existing, updatedAt }
26445
- : { tabId, updatedAt };
26521
+ const next = existing ? { ...existing, updatedAt } : { tabId, updatedAt };
26446
26522
  store.put(next);
26447
26523
  };
26448
26524
  getReq.onerror = () => reject(getReq.error);
@@ -26473,7 +26549,7 @@ class IndexedDBService {
26473
26549
  }
26474
26550
  return cleared;
26475
26551
  }
26476
- async appendRrwebEvent(record) {
26552
+ async appendEvent(record) {
26477
26553
  const db = await this.dbPromise;
26478
26554
  return new Promise((resolve, reject) => {
26479
26555
  const tx = db.transaction(rrwebEventsStore, 'readwrite');
@@ -26482,11 +26558,16 @@ class IndexedDBService {
26482
26558
  tx.onerror = () => reject(tx.error);
26483
26559
  });
26484
26560
  }
26485
- async appendOtelSpan(record) {
26561
+ async appendSpans(records) {
26562
+ if (!records.length)
26563
+ return;
26486
26564
  const db = await this.dbPromise;
26487
26565
  return new Promise((resolve, reject) => {
26488
26566
  const tx = db.transaction(otelSpansStore, 'readwrite');
26489
- tx.objectStore(otelSpansStore).add(record);
26567
+ const store = tx.objectStore(otelSpansStore);
26568
+ for (const record of records) {
26569
+ store.add(record);
26570
+ }
26490
26571
  tx.oncomplete = () => resolve();
26491
26572
  tx.onerror = () => reject(tx.error);
26492
26573
  });
@@ -26562,12 +26643,11 @@ class IndexedDBService {
26562
26643
  const tx = db.transaction([rrwebEventsStore, otelSpansStore], 'readwrite');
26563
26644
  const rrwebStore = tx.objectStore(rrwebEventsStore);
26564
26645
  const spanStore = tx.objectStore(otelSpansStore);
26565
- Promise.all([
26566
- pruneStore(rrwebStore, rrwebRange),
26567
- pruneStore(spanStore, spansRange),
26568
- ]).then(() => {
26646
+ Promise.all([pruneStore(rrwebStore, rrwebRange), pruneStore(spanStore, spansRange)])
26647
+ .then(() => {
26569
26648
  // noop; completion is signaled by tx.oncomplete
26570
- }).catch((e) => {
26649
+ })
26650
+ .catch((e) => {
26571
26651
  reject(e);
26572
26652
  });
26573
26653
  tx.oncomplete = () => resolve();
@@ -26605,12 +26685,11 @@ class IndexedDBService {
26605
26685
  const tx = db.transaction([rrwebEventsStore, otelSpansStore], 'readwrite');
26606
26686
  const rrwebStore = tx.objectStore(rrwebEventsStore);
26607
26687
  const spanStore = tx.objectStore(otelSpansStore);
26608
- Promise.all([
26609
- pruneStore(rrwebStore, rrwebRange),
26610
- pruneStore(spanStore, spansRange),
26611
- ]).then(() => {
26688
+ Promise.all([pruneStore(rrwebStore, rrwebRange), pruneStore(spanStore, spansRange)])
26689
+ .then(() => {
26612
26690
  // noop
26613
- }).catch((e) => reject(e));
26691
+ })
26692
+ .catch((e) => reject(e));
26614
26693
  tx.oncomplete = () => resolve();
26615
26694
  tx.onerror = () => reject(tx.error);
26616
26695
  });
@@ -26644,10 +26723,12 @@ class IndexedDBService {
26644
26723
  const r = attr.delete(tabId);
26645
26724
  r.onsuccess = () => res();
26646
26725
  r.onerror = () => rej(r.error);
26647
- }),
26648
- ]).then(() => {
26726
+ })
26727
+ ])
26728
+ .then(() => {
26649
26729
  // noop
26650
- }).catch((e) => reject(e));
26730
+ })
26731
+ .catch((e) => reject(e));
26651
26732
  tx.oncomplete = () => resolve();
26652
26733
  tx.onerror = () => reject(tx.error);
26653
26734
  });
@@ -27069,17 +27150,13 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27069
27150
  return this._sessionAttributes || {};
27070
27151
  }
27071
27152
  set sessionAttributes(attributes) {
27072
- var _a;
27073
27153
  this._sessionAttributes = attributes;
27074
- (_a = this._crashBuffer) === null || _a === void 0 ? void 0 : _a.setAttrs({ sessionAttributes: this.sessionAttributes });
27075
27154
  }
27076
27155
  get userAttributes() {
27077
27156
  return this._userAttributes;
27078
27157
  }
27079
27158
  set userAttributes(userAttributes) {
27080
- var _a;
27081
27159
  this._userAttributes = userAttributes;
27082
- (_a = this._crashBuffer) === null || _a === void 0 ? void 0 : _a.setAttrs({ userAttributes: this._userAttributes });
27083
27160
  }
27084
27161
  get error() {
27085
27162
  return this._error;
@@ -27149,7 +27226,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27149
27226
  }
27150
27227
  this._configs = {
27151
27228
  ..._config__WEBPACK_IMPORTED_MODULE_5__.BASE_CONFIG,
27152
- apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || '',
27229
+ apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || ''
27153
27230
  };
27154
27231
  }
27155
27232
  /**
@@ -27157,7 +27234,6 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27157
27234
  * @param configs - custom configurations for session debugger
27158
27235
  */
27159
27236
  init(configs) {
27160
- var _a;
27161
27237
  if (typeof window === 'undefined') {
27162
27238
  return;
27163
27239
  }
@@ -27169,26 +27245,41 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27169
27245
  void this._bufferDb.sweepStaleTabs(24 * 60 * 60 * 1000);
27170
27246
  (0,_patch__WEBPACK_IMPORTED_MODULE_6__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
27171
27247
  (0,_patch__WEBPACK_IMPORTED_MODULE_6__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
27248
+ this._setupCrashBuffer();
27172
27249
  this._tracer.init(this._configs);
27173
27250
  this._apiService.init(this._configs);
27174
27251
  this._sessionWidget.init(this._configs);
27175
27252
  this._socketService.init({
27176
- clientId: this._tracer.clientId,
27177
27253
  apiKey: this._configs.apiKey,
27254
+ clientId: this._tracer.clientId,
27178
27255
  socketUrl: this._configs.apiBaseUrl || '',
27179
27256
  keepAlive: Boolean(this._configs.useWebsocket),
27180
- usePostMessageFallback: Boolean(this._configs.usePostMessageFallback),
27257
+ usePostMessageFallback: Boolean(this._configs.usePostMessageFallback)
27181
27258
  });
27182
27259
  this._navigationRecorder.init({
27183
27260
  version: this._configs.version,
27184
27261
  application: this._configs.application,
27185
27262
  environment: this._configs.environment,
27186
- enabled: this._configs.recordNavigation,
27263
+ enabled: this._configs.recordNavigation
27187
27264
  });
27188
27265
  if (this._configs.apiKey) {
27189
27266
  this._recorder.init(this._configs, this._socketService);
27190
27267
  }
27191
- // Crash buffer (browser): keep a short rolling window when not actively recording.
27268
+ if (this.sessionId && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.started || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.paused)) {
27269
+ this._start();
27270
+ }
27271
+ else {
27272
+ // Buffer-only recording when there is no active debug session.
27273
+ this._startBufferOnlyRecording();
27274
+ }
27275
+ this._registerWidgetEvents();
27276
+ this._registerSocketServiceListeners();
27277
+ _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
27278
+ // Emit init observable event
27279
+ this.emit('init', [this]);
27280
+ }
27281
+ _setupCrashBuffer() {
27282
+ var _a;
27192
27283
  if ((_a = this._configs.buffering) === null || _a === void 0 ? void 0 : _a.enabled) {
27193
27284
  const windowMinutes = this._configs.buffering.windowMinutes || 1;
27194
27285
  const windowMs = Math.max(10000, windowMinutes * 60 * 1000);
@@ -27198,24 +27289,17 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27198
27289
  this._crashBuffer.setAttrs({
27199
27290
  sessionAttributes: this.sessionAttributes,
27200
27291
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
27201
- userAttributes: this._userAttributes,
27292
+ userAttributes: this._userAttributes
27293
+ });
27294
+ this._crashBuffer.on('error-span-appended', (payload) => {
27295
+ if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped || this.sessionId)
27296
+ return;
27297
+ if (!payload.span)
27298
+ return;
27299
+ this._createExceptionSession(payload.span);
27202
27300
  });
27203
27301
  this._registerCrashBufferLifecycleHandlers();
27204
27302
  }
27205
- if (this.sessionId
27206
- && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.started
27207
- || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.paused)) {
27208
- this._start();
27209
- }
27210
- else {
27211
- // Buffer-only recording when there is no active debug session.
27212
- this._startBufferOnlyRecording();
27213
- }
27214
- this._registerWidgetEvents();
27215
- this._registerSocketServiceListeners();
27216
- _services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
27217
- // Emit init observable event
27218
- this.emit('init', [this]);
27219
27303
  }
27220
27304
  _registerCrashBufferLifecycleHandlers() {
27221
27305
  if (this._bufferLifecycleHandlersRegistered)
@@ -27287,8 +27371,9 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27287
27371
  type: 'success',
27288
27372
  message: 'Your session was saved',
27289
27373
  button: {
27290
- text: 'Open session', url: sessionUrl,
27291
- },
27374
+ text: 'Open session',
27375
+ url: sessionUrl
27376
+ }
27292
27377
  }, 5000);
27293
27378
  return res;
27294
27379
  }
@@ -27337,7 +27422,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27337
27422
  else {
27338
27423
  const request = {
27339
27424
  sessionAttributes: { comment },
27340
- stoppedAt: this._recorder.stoppedAt,
27425
+ stoppedAt: this._recorder.stoppedAt
27341
27426
  };
27342
27427
  const response = await this._apiService.stopSession(this.sessionId, request);
27343
27428
  _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_RESPONSE, response);
@@ -27395,7 +27480,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27395
27480
  /**
27396
27481
  * Set the session attributes
27397
27482
  * @param attributes - the attributes to set
27398
- */
27483
+ */
27399
27484
  setSessionAttributes(attributes) {
27400
27485
  this._sessionAttributes = attributes;
27401
27486
  }
@@ -27428,16 +27513,12 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27428
27513
  const normalizedError = this._normalizeError(error);
27429
27514
  const normalizedErrorInfo = this._normalizeErrorInfo(errorInfo);
27430
27515
  this._tracer.captureException(normalizedError, normalizedErrorInfo);
27431
- // If user isn't actively recording, auto-flush the crash buffer.
27432
- if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped && !this.sessionId) {
27433
- void this.flushBuffer({ reason: 'exception' });
27434
- }
27435
27516
  }
27436
27517
  catch (e) {
27437
27518
  this.error = (e === null || e === void 0 ? void 0 : e.message) || 'Failed to capture exception';
27438
27519
  }
27439
27520
  }
27440
- async flushBuffer(payload) {
27521
+ async _flushBuffer(sessionId) {
27441
27522
  var _a, _b;
27442
27523
  if (!((_b = (_a = this._configs) === null || _a === void 0 ? void 0 : _a.buffering) === null || _b === void 0 ? void 0 : _b.enabled))
27443
27524
  return null;
@@ -27446,49 +27527,39 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27446
27527
  if (this._isFlushingBuffer)
27447
27528
  return null;
27448
27529
  // Don’t flush while a live recording is active.
27449
- if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped || this.sessionId)
27530
+ if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped)
27450
27531
  return null;
27451
27532
  this._isFlushingBuffer = true;
27452
27533
  try {
27453
- const reason = (payload === null || payload === void 0 ? void 0 : payload.reason) || 'manual';
27454
- await this._crashBuffer.setAttrs({
27455
- sessionAttributes: this.sessionAttributes,
27456
- resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
27457
- userAttributes: this._userAttributes,
27458
- });
27534
+ // await this._crashBuffer.setAttrs({
27535
+ // sessionAttributes: this.sessionAttributes,
27536
+ // resourceAttributes: getNavigatorInfo(),
27537
+ // userAttributes: this._userAttributes
27538
+ // })
27459
27539
  const snapshot = await this._crashBuffer.snapshot();
27460
27540
  if (snapshot.rrwebEvents.length === 0 && snapshot.otelSpans.length === 0) {
27461
27541
  return null;
27462
27542
  }
27463
- const request = {
27464
- name: this._getSessionName(),
27465
- stoppedAt: new Date().toISOString(),
27466
- sessionAttributes: this.sessionAttributes,
27467
- resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
27468
- ...(this._userAttributes ? { userAttributes: this._userAttributes } : {}),
27469
- debugSessionData: {
27470
- meta: {
27471
- reason,
27472
- windowMs: snapshot.windowMs,
27473
- fromTs: snapshot.fromTs,
27474
- toTs: snapshot.toTs,
27475
- },
27476
- events: snapshot.rrwebEvents.map((e) => e.event),
27477
- spans: snapshot.otelSpans.map((s) => s.span),
27478
- attrs: snapshot.attrs,
27479
- },
27480
- };
27481
- try {
27482
- const res = await this._apiService.startSession(request);
27483
- await this._crashBuffer.clear();
27484
- return res;
27485
- }
27486
- catch (_e) {
27487
- // swallow: flush is best-effort; never throw into app code
27488
- return null;
27543
+ if (sessionId) {
27544
+ const spans = snapshot.otelSpans.map((s) => s.span);
27545
+ const events = snapshot.rrwebEvents.map((e) => e.event);
27546
+ await Promise.all([
27547
+ this._tracer.exportTraces(spans),
27548
+ this._apiService.exportEvents(sessionId, { events }),
27549
+ this._apiService.updateSessionAttributes(sessionId, {
27550
+ name: this._getSessionName(),
27551
+ sessionAttributes: this.sessionAttributes,
27552
+ resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
27553
+ userAttributes: this._userAttributes || undefined
27554
+ })
27555
+ ]);
27489
27556
  }
27490
27557
  }
27558
+ catch (_e) {
27559
+ // swallow: flush is best-effort; never throw into app code
27560
+ }
27491
27561
  finally {
27562
+ await this._crashBuffer.clear();
27492
27563
  this._isFlushingBuffer = false;
27493
27564
  }
27494
27565
  }
@@ -27505,11 +27576,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27505
27576
  const payload = {
27506
27577
  sessionAttributes: {
27507
27578
  ...this.sessionAttributes,
27508
- ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.sessionAttributes) || {}),
27579
+ ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.sessionAttributes) || {})
27509
27580
  },
27510
27581
  resourceAttributes: {
27511
27582
  ...(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
27512
- ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {}),
27583
+ ...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {})
27513
27584
  },
27514
27585
  userAttributes: this._userAttributes
27515
27586
  };
@@ -27637,8 +27708,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27637
27708
  message: 'Your session was auto-saved due to an error',
27638
27709
  button: {
27639
27710
  text: 'Open session',
27640
- url: (_a = payload === null || payload === void 0 ? void 0 : payload.data) === null || _a === void 0 ? void 0 : _a.url,
27641
- },
27711
+ url: (_a = payload === null || payload === void 0 ? void 0 : payload.data) === null || _a === void 0 ? void 0 : _a.url
27712
+ }
27642
27713
  }, 5000);
27643
27714
  });
27644
27715
  this._socketService.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_START, (payload) => {
@@ -27654,11 +27725,21 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27654
27725
  }
27655
27726
  });
27656
27727
  this._socketService.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_SAVE_BUFFER_EVENT, (payload) => {
27657
- // Backend asks the client to flush its crash buffer as a debug session.
27658
- const reason = (payload === null || payload === void 0 ? void 0 : payload.reason) || 'remote';
27659
- void this.flushBuffer({ reason });
27728
+ var _a;
27729
+ if (!((_a = payload === null || payload === void 0 ? void 0 : payload.debugSession) === null || _a === void 0 ? void 0 : _a._id))
27730
+ return;
27731
+ void this._flushBuffer(payload.debugSession._id);
27660
27732
  });
27661
27733
  }
27734
+ async _createExceptionSession(span) {
27735
+ try {
27736
+ const session = await this._apiService.createErrorSession({ span });
27737
+ if (session) {
27738
+ void this._flushBuffer(session._id);
27739
+ }
27740
+ }
27741
+ catch (_ignored) { }
27742
+ }
27662
27743
  /**
27663
27744
  * Create a new session and start it
27664
27745
  */
@@ -27670,17 +27751,14 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27670
27751
  sessionAttributes: this.sessionAttributes,
27671
27752
  resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
27672
27753
  name: this._getSessionName(),
27673
- ...(this._userAttributes ? { userAttributes: this._userAttributes } : {}),
27754
+ ...(this._userAttributes ? { userAttributes: this._userAttributes } : {})
27674
27755
  };
27675
- const request = !this.continuousRecording ?
27676
- payload : { debugSessionData: payload };
27756
+ const request = !this.continuousRecording ? payload : { debugSessionData: payload };
27677
27757
  const session = this.continuousRecording
27678
27758
  ? await this._apiService.startContinuousDebugSession(request, signal)
27679
27759
  : await this._apiService.startSession(request, signal);
27680
27760
  if (session) {
27681
- session.sessionType = this.continuousRecording
27682
- ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS
27683
- : _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.SessionType.MANUAL;
27761
+ session.sessionType = this.continuousRecording ? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS : _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.SessionType.MANUAL;
27684
27762
  this._setupSessionAndStart(session, false);
27685
27763
  }
27686
27764
  }
@@ -27702,7 +27780,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
27702
27780
  this._tracer.start(this.sessionId, this.sessionType);
27703
27781
  // Ensure we switch from buffer-only recording to session recording cleanly.
27704
27782
  void this._recorder.restart(this.sessionId, this.sessionType);
27705
- this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType, });
27783
+ this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType });
27706
27784
  if (this.session) {
27707
27785
  _eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STARTED_EVENT, this.session);
27708
27786
  this._socketService.subscribeToSession(this.session);
@@ -29957,7 +30035,10 @@ var SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {
29957
30035
  }
29958
30036
  SessionRecorderTraceIdRatioBasedSampler.prototype.shouldSample = function (context, traceId) {
29959
30037
  if (traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX)
29960
- || traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)) {
30038
+ || traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)
30039
+ // || traceId.startsWith(MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX)
30040
+ // || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX)
30041
+ ) {
29961
30042
  return {
29962
30043
  decision: _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_1__.SamplingDecision.RECORD_AND_SAMPLED,
29963
30044
  };
@@ -30041,7 +30122,7 @@ var SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {
30041
30122
  /* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* binding */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
30042
30123
  /* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* binding */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
30043
30124
  /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
30044
- /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX),
30125
+ /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
30045
30126
  /* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_DEBUG_PREFIX),
30046
30127
  /* harmony export */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH: () => (/* binding */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH),
30047
30128
  /* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_DOC_PREFIX),
@@ -30058,11 +30139,11 @@ var MULTIPLAYER_TRACE_DOC_PREFIX = 'd0cd0c';
30058
30139
  var MULTIPLAYER_TRACE_DEBUG_PREFIX = 'debdeb';
30059
30140
  var MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX = 'cdbcdb';
30060
30141
  var MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX = 'cdbcac';
30061
- var MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX = 'debcdb';
30142
+ var MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX = 'debcdb';
30062
30143
  var MULTIPLAYER_TRACE_PREFIX_MAP = (_a = {},
30063
30144
  _a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS] = MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX,
30064
30145
  _a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.SESSION_CACHE] = MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX,
30065
- _a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS_SESSION_CACHE] = MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX,
30146
+ _a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS_SESSION_CACHE] = MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX,
30066
30147
  _a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.MANUAL] = MULTIPLAYER_TRACE_DEBUG_PREFIX,
30067
30148
  _a);
30068
30149
  var MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH = 8;
@@ -30164,7 +30245,7 @@ var MASK_PLACEHOLDER = '***MASKED***';
30164
30245
  /* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
30165
30246
  /* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
30166
30247
  /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
30167
- /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX),
30248
+ /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
30168
30249
  /* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
30169
30250
  /* harmony export */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH),
30170
30251
  /* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DOC_PREFIX),
@@ -30211,7 +30292,7 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
30211
30292
  if (config === void 0) { config = {}; }
30212
30293
  this.usePostMessage = false;
30213
30294
  var _a = config.url, url = _a === void 0 ? _constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL : _a, apiKey = config.apiKey, _b = config.headers, headers = _b === void 0 ? {} : _b, _c = config.timeoutMillis, timeoutMillis = _c === void 0 ? 30000 : _c, _d = config.keepAlive, keepAlive = _d === void 0 ? true : _d, _e = config.concurrencyLimit, concurrencyLimit = _e === void 0 ? 20 : _e, _f = config.postMessageType, postMessageType = _f === void 0 ? 'MULTIPLAYER_SESSION_DEBUGGER_LIB' : _f, _g = config.postMessageTargetOrigin, postMessageTargetOrigin = _g === void 0 ? '*' : _g;
30214
- this.config = __assign(__assign({}, config), { url: url, apiKey: apiKey, headers: headers, timeoutMillis: timeoutMillis, keepAlive: keepAlive, concurrencyLimit: concurrencyLimit });
30295
+ this.config = __assign(__assign({}, config), { url: url, apiKey: apiKey, headers: headers, keepAlive: keepAlive, timeoutMillis: timeoutMillis, concurrencyLimit: concurrencyLimit });
30215
30296
  this.postMessageType = postMessageType;
30216
30297
  this.postMessageTargetOrigin = postMessageTargetOrigin;
30217
30298
  this.exporter = this._createExporter();
@@ -30221,8 +30302,8 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
30221
30302
  // Filter spans to only include those with Multiplayer trace prefixes
30222
30303
  var filteredSpans = spans.filter(function (span) {
30223
30304
  var traceId = span.spanContext().traceId;
30224
- return traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX) ||
30225
- traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX);
30305
+ return (traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX) ||
30306
+ traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX));
30226
30307
  });
30227
30308
  // Only proceed if there are filtered spans
30228
30309
  if (filteredSpans.length === 0) {
@@ -30249,6 +30330,14 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
30249
30330
  SessionRecorderBrowserTraceExporter.prototype.shutdown = function () {
30250
30331
  return this.exporter.shutdown();
30251
30332
  };
30333
+ SessionRecorderBrowserTraceExporter.prototype.exportBuffer = function (spans) {
30334
+ var _this = this;
30335
+ return new Promise(function (resolve) {
30336
+ _this.exporter.export(spans, function (result) {
30337
+ resolve(result);
30338
+ });
30339
+ });
30340
+ };
30252
30341
  SessionRecorderBrowserTraceExporter.prototype.exportViaPostMessage = function (spans, resultCallback) {
30253
30342
  var _this = this;
30254
30343
  if (typeof window === 'undefined') {
@@ -30259,7 +30348,7 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
30259
30348
  window.postMessage({
30260
30349
  action: 'traces',
30261
30350
  type: this.postMessageType,
30262
- payload: spans.map(function (span) { return _this._serializeSpan(span); }),
30351
+ payload: spans.map(function (span) { return _this.serializeSpan(span); })
30263
30352
  }, this.postMessageTargetOrigin);
30264
30353
  resultCallback({ code: 0 });
30265
30354
  }
@@ -30267,38 +30356,17 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
30267
30356
  resultCallback({ code: 1 });
30268
30357
  }
30269
30358
  };
30270
- SessionRecorderBrowserTraceExporter.prototype._serializeSpan = function (span) {
30271
- var _a;
30359
+ SessionRecorderBrowserTraceExporter.prototype.serializeSpan = function (span) {
30272
30360
  var spanContext = span.spanContext();
30273
- return {
30274
- _spanContext: spanContext,
30275
- name: span.name,
30276
- kind: span.kind,
30277
- links: span.links,
30278
- ended: span.ended,
30279
- events: span.events,
30280
- status: span.status,
30281
- endTime: span.endTime,
30282
- startTime: span.startTime,
30283
- duration: span.duration,
30284
- attributes: span.attributes,
30285
- parentSpanId: (_a = span.parentSpanContext) === null || _a === void 0 ? void 0 : _a.spanId,
30286
- droppedAttributesCount: span.droppedAttributesCount,
30287
- droppedEventsCount: span.droppedEventsCount,
30288
- droppedLinksCount: span.droppedLinksCount,
30289
- resource: {
30290
- attributes: span.resource.attributes,
30291
- asyncAttributesPending: span.resource.asyncAttributesPending,
30292
- },
30293
- };
30361
+ return __assign(__assign({}, span), { _spanContext: spanContext });
30294
30362
  };
30295
30363
  SessionRecorderBrowserTraceExporter.prototype._createExporter = function () {
30296
30364
  return new _opentelemetry_exporter_trace_otlp_http__WEBPACK_IMPORTED_MODULE_1__.OTLPTraceExporter({
30297
30365
  url: this.config.url,
30298
- headers: __assign(__assign({ 'Content-Type': 'application/json' }, (this.config.apiKey ? { 'Authorization': this.config.apiKey } : {})), (this.config.headers || {})),
30366
+ headers: __assign(__assign({ 'Content-Type': 'application/json' }, (this.config.apiKey ? { Authorization: this.config.apiKey } : {})), (this.config.headers || {})),
30299
30367
  timeoutMillis: this.config.timeoutMillis,
30300
30368
  keepAlive: this.config.keepAlive,
30301
- concurrencyLimit: this.config.concurrencyLimit,
30369
+ concurrencyLimit: this.config.concurrencyLimit
30302
30370
  });
30303
30371
  };
30304
30372
  SessionRecorderBrowserTraceExporter.prototype.setApiKey = function (apiKey) {
@@ -30376,7 +30444,7 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
30376
30444
  /* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
30377
30445
  /* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
30378
30446
  /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
30379
- /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX),
30447
+ /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
30380
30448
  /* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
30381
30449
  /* harmony export */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH),
30382
30450
  /* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DOC_PREFIX),
@@ -30978,6 +31046,17 @@ var setGrpcResponseMessage = function (body, options) {
30978
31046
 
30979
31047
  /***/ }),
30980
31048
 
31049
+ /***/ "../session-recorder-common/dist/esm/type/crash-buffer.js":
31050
+ /*!****************************************************************!*\
31051
+ !*** ../session-recorder-common/dist/esm/type/crash-buffer.js ***!
31052
+ \****************************************************************/
31053
+ /***/ (() => {
31054
+
31055
+
31056
+ //# sourceMappingURL=crash-buffer.js.map
31057
+
31058
+ /***/ }),
31059
+
30981
31060
  /***/ "../session-recorder-common/dist/esm/type/index.js":
30982
31061
  /*!*********************************************************!*\
30983
31062
  !*** ../session-recorder-common/dist/esm/type/index.js ***!
@@ -30992,6 +31071,8 @@ var setGrpcResponseMessage = function (body, options) {
30992
31071
  /* harmony import */ var _session_type_enum__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./session-type.enum */ "../session-recorder-common/dist/esm/type/session-type.enum.js");
30993
31072
  /* harmony import */ var _user_type_enum__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./user-type.enum */ "../session-recorder-common/dist/esm/type/user-type.enum.js");
30994
31073
  /* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./session */ "../session-recorder-common/dist/esm/type/session.js");
31074
+ /* harmony import */ var _crash_buffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./crash-buffer */ "../session-recorder-common/dist/esm/type/crash-buffer.js");
31075
+
30995
31076
 
30996
31077
 
30997
31078
 
@@ -49410,7 +49491,7 @@ var __webpack_exports__ = {};
49410
49491
  /* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
49411
49492
  /* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
49412
49493
  /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
49413
- /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX),
49494
+ /* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
49414
49495
  /* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
49415
49496
  /* harmony export */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH),
49416
49497
  /* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_DOC_PREFIX),
@@ -49510,7 +49591,7 @@ var __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL = __web
49510
49591
  var __webpack_exports__MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL = __webpack_exports__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL;
49511
49592
  var __webpack_exports__MULTIPLAYER_TRACE_CLIENT_ID_LENGTH = __webpack_exports__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH;
49512
49593
  var __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX = __webpack_exports__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX;
49513
- var __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX = __webpack_exports__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX;
49594
+ var __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX = __webpack_exports__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX;
49514
49595
  var __webpack_exports__MULTIPLAYER_TRACE_DEBUG_PREFIX = __webpack_exports__.MULTIPLAYER_TRACE_DEBUG_PREFIX;
49515
49596
  var __webpack_exports__MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH = __webpack_exports__.MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH;
49516
49597
  var __webpack_exports__MULTIPLAYER_TRACE_DOC_PREFIX = __webpack_exports__.MULTIPLAYER_TRACE_DOC_PREFIX;
@@ -49527,6 +49608,6 @@ var __webpack_exports__UserType = __webpack_exports__.UserType;
49527
49608
  var __webpack_exports__WidgetButtonPlacement = __webpack_exports__.WidgetButtonPlacement;
49528
49609
  var __webpack_exports__default = __webpack_exports__["default"];
49529
49610
  var __webpack_exports__recorderEventBus = __webpack_exports__.recorderEventBus;
49530
- 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_COMPONENT_HASH as ATTR_MULTIPLAYER_ISSUE_COMPONENT_HASH, __webpack_exports__ATTR_MULTIPLAYER_ISSUE_CUSTOM_HASH as ATTR_MULTIPLAYER_ISSUE_CUSTOM_HASH, __webpack_exports__ATTR_MULTIPLAYER_ISSUE_HASH as ATTR_MULTIPLAYER_ISSUE_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_CLIENT_ID as ATTR_MULTIPLAYER_SESSION_CLIENT_ID, __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_USER_HASH as ATTR_MULTIPLAYER_USER_HASH, __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_CLIENT_ID_LENGTH as MULTIPLAYER_TRACE_CLIENT_ID_LENGTH, __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX as MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_SESSION_DEBUG_PREFIX as MULTIPLAYER_TRACE_CONTINUOUS_SESSION_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__MULTIPLAYER_TRACE_PREFIX_MAP as MULTIPLAYER_TRACE_PREFIX_MAP, __webpack_exports__MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX as MULTIPLAYER_TRACE_SESSION_CACHE_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 };
49611
+ 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_COMPONENT_HASH as ATTR_MULTIPLAYER_ISSUE_COMPONENT_HASH, __webpack_exports__ATTR_MULTIPLAYER_ISSUE_CUSTOM_HASH as ATTR_MULTIPLAYER_ISSUE_CUSTOM_HASH, __webpack_exports__ATTR_MULTIPLAYER_ISSUE_HASH as ATTR_MULTIPLAYER_ISSUE_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_CLIENT_ID as ATTR_MULTIPLAYER_SESSION_CLIENT_ID, __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_USER_HASH as ATTR_MULTIPLAYER_USER_HASH, __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_CLIENT_ID_LENGTH as MULTIPLAYER_TRACE_CLIENT_ID_LENGTH, __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX as MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, __webpack_exports__MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX as MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_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__MULTIPLAYER_TRACE_PREFIX_MAP as MULTIPLAYER_TRACE_PREFIX_MAP, __webpack_exports__MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX as MULTIPLAYER_TRACE_SESSION_CACHE_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 };
49531
49612
 
49532
49613
  //# sourceMappingURL=index.js.map