@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.
- package/dist/browser/index.js +354 -269
- package/dist/exporters/index.js +1 -1
- package/dist/exporters/index.js.LICENSE.txt +6 -0
- package/dist/exporters/index.js.map +1 -1
- package/dist/index.js +352 -271
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +352 -269
- package/dist/index.umd.js.map +1 -1
- package/dist/otel/CrashBufferSpanProcessor.d.ts +18 -0
- package/dist/otel/CrashBufferSpanProcessor.d.ts.map +1 -0
- package/dist/otel/CrashBufferSpanProcessor.js +42 -0
- package/dist/otel/CrashBufferSpanProcessor.js.map +1 -0
- package/dist/otel/index.d.ts +7 -5
- package/dist/otel/index.d.ts.map +1 -1
- package/dist/otel/index.js +36 -83
- package/dist/otel/index.js.map +1 -1
- package/dist/rrweb/index.d.ts +2 -2
- package/dist/rrweb/index.d.ts.map +1 -1
- package/dist/rrweb/index.js +11 -7
- package/dist/rrweb/index.js.map +1 -1
- package/dist/services/api.service.d.ts +22 -0
- package/dist/services/api.service.d.ts.map +1 -1
- package/dist/services/api.service.js +22 -5
- package/dist/services/api.service.js.map +1 -1
- package/dist/services/crashBuffer.service.d.ts +10 -35
- package/dist/services/crashBuffer.service.d.ts.map +1 -1
- package/dist/services/crashBuffer.service.js +66 -20
- package/dist/services/crashBuffer.service.js.map +1 -1
- package/dist/services/indexedDb.service.d.ts +3 -3
- package/dist/services/indexedDb.service.d.ts.map +1 -1
- package/dist/services/indexedDb.service.js +24 -21
- package/dist/services/indexedDb.service.js.map +1 -1
- package/dist/session-recorder.d.ts +4 -4
- package/dist/session-recorder.d.ts.map +1 -1
- package/dist/session-recorder.js +83 -86
- package/dist/session-recorder.js.map +1 -1
- package/dist/types/session-recorder.d.ts +6 -13
- package/dist/types/session-recorder.d.ts.map +1 -1
- package/dist/types/session-recorder.js.map +1 -1
- package/package.json +2 -2
package/dist/index.umd.js
CHANGED
|
@@ -24326,7 +24326,7 @@ const CONTINUOUS_DEBUGGING_TIMEOUT = 60000; // 1 minutes
|
|
|
24326
24326
|
const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30; // TODO: move to shared config otel core
|
|
24327
24327
|
const REMOTE_SESSION_RECORDING_START = 'remote-session-recording:start';
|
|
24328
24328
|
const REMOTE_SESSION_RECORDING_STOP = 'remote-session-recording:stop';
|
|
24329
|
-
const PACKAGE_VERSION_EXPORT = "1.3.
|
|
24329
|
+
const PACKAGE_VERSION_EXPORT = "1.3.19" || 0;
|
|
24330
24330
|
// Regex patterns for OpenTelemetry ignore URLs
|
|
24331
24331
|
const OTEL_IGNORE_URLS = [
|
|
24332
24332
|
// Traces endpoint
|
|
@@ -24983,6 +24983,63 @@ class NavigationRecorder {
|
|
|
24983
24983
|
|
|
24984
24984
|
|
|
24985
24985
|
|
|
24986
|
+
/***/ }),
|
|
24987
|
+
|
|
24988
|
+
/***/ "./src/otel/CrashBufferSpanProcessor.ts":
|
|
24989
|
+
/*!**********************************************!*\
|
|
24990
|
+
!*** ./src/otel/CrashBufferSpanProcessor.ts ***!
|
|
24991
|
+
\**********************************************/
|
|
24992
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
24993
|
+
|
|
24994
|
+
"use strict";
|
|
24995
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
24996
|
+
/* harmony export */ CrashBufferSpanProcessor: () => (/* binding */ CrashBufferSpanProcessor)
|
|
24997
|
+
/* harmony export */ });
|
|
24998
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js");
|
|
24999
|
+
/* 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");
|
|
25000
|
+
|
|
25001
|
+
|
|
25002
|
+
/**
|
|
25003
|
+
* Implementation of the {@link SpanProcessor} that batches spans exported by
|
|
25004
|
+
* the SDK then pushes them to the exporter pipeline.
|
|
25005
|
+
*/
|
|
25006
|
+
class CrashBufferSpanProcessor {
|
|
25007
|
+
constructor(_exporter, _crashBuffer, _serializeSpan) {
|
|
25008
|
+
this._exporter = _exporter;
|
|
25009
|
+
this._crashBuffer = _crashBuffer;
|
|
25010
|
+
this._serializeSpan = _serializeSpan;
|
|
25011
|
+
}
|
|
25012
|
+
forceFlush() {
|
|
25013
|
+
return this._exporter.forceFlush();
|
|
25014
|
+
}
|
|
25015
|
+
onStart(_span, _parentContext) {
|
|
25016
|
+
return this._exporter.onStart(_span, _parentContext);
|
|
25017
|
+
}
|
|
25018
|
+
onEnd(span) {
|
|
25019
|
+
const traceId = span.spanContext().traceId;
|
|
25020
|
+
if ((span.spanContext().traceFlags & _opentelemetry_api__WEBPACK_IMPORTED_MODULE_1__.TraceFlags.SAMPLED) === 0) {
|
|
25021
|
+
return;
|
|
25022
|
+
}
|
|
25023
|
+
if (traceId.startsWith(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX) ||
|
|
25024
|
+
traceId.startsWith(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX)) {
|
|
25025
|
+
if (this._crashBuffer) {
|
|
25026
|
+
this._crashBuffer.appendSpans([
|
|
25027
|
+
{
|
|
25028
|
+
ts: span.startTime[0] * 1000 + span.startTime[1] / 1000000,
|
|
25029
|
+
span: this._serializeSpan(span)
|
|
25030
|
+
}
|
|
25031
|
+
]);
|
|
25032
|
+
}
|
|
25033
|
+
return;
|
|
25034
|
+
}
|
|
25035
|
+
this._exporter.onEnd(span);
|
|
25036
|
+
}
|
|
25037
|
+
shutdown() {
|
|
25038
|
+
return this._exporter.shutdown();
|
|
25039
|
+
}
|
|
25040
|
+
}
|
|
25041
|
+
|
|
25042
|
+
|
|
24986
25043
|
/***/ }),
|
|
24987
25044
|
|
|
24988
25045
|
/***/ "./src/otel/helpers.ts":
|
|
@@ -25223,19 +25280,21 @@ const getElementTextContent = (element) => {
|
|
|
25223
25280
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
25224
25281
|
/* harmony export */ TracerBrowserSDK: () => (/* binding */ TracerBrowserSDK)
|
|
25225
25282
|
/* harmony export */ });
|
|
25226
|
-
/* harmony import */ var
|
|
25227
|
-
/* harmony import */ var
|
|
25228
|
-
/* harmony import */ var
|
|
25229
|
-
/* harmony import */ var
|
|
25230
|
-
/* harmony import */ var
|
|
25231
|
-
/* harmony import */ var
|
|
25283
|
+
/* harmony import */ var _opentelemetry_resources__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @opentelemetry/resources */ "../../node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js");
|
|
25284
|
+
/* harmony import */ var _opentelemetry_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @opentelemetry/core */ "../../node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js");
|
|
25285
|
+
/* 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");
|
|
25286
|
+
/* 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");
|
|
25287
|
+
/* 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");
|
|
25288
|
+
/* harmony import */ var _opentelemetry_instrumentation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @opentelemetry/instrumentation */ "../../node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js");
|
|
25232
25289
|
/* 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");
|
|
25233
25290
|
/* 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");
|
|
25234
|
-
/* harmony import */ var
|
|
25235
|
-
/* harmony import */ var
|
|
25236
|
-
/* harmony import */ var
|
|
25291
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace-api.js");
|
|
25292
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/context-api.js");
|
|
25293
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/status.js");
|
|
25237
25294
|
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
|
|
25238
25295
|
/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ "./src/otel/helpers.ts");
|
|
25296
|
+
/* harmony import */ var _CrashBufferSpanProcessor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CrashBufferSpanProcessor */ "./src/otel/CrashBufferSpanProcessor.ts");
|
|
25297
|
+
|
|
25239
25298
|
|
|
25240
25299
|
|
|
25241
25300
|
|
|
@@ -25249,8 +25308,8 @@ const getElementTextContent = (element) => {
|
|
|
25249
25308
|
|
|
25250
25309
|
class TracerBrowserSDK {
|
|
25251
25310
|
constructor() {
|
|
25252
|
-
this.sessionId = '';
|
|
25253
25311
|
this.clientId = '';
|
|
25312
|
+
this.sessionId = '';
|
|
25254
25313
|
this.globalErrorListenersRegistered = false;
|
|
25255
25314
|
}
|
|
25256
25315
|
setSessionId(sessionId, sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionType.MANUAL) {
|
|
@@ -25268,36 +25327,33 @@ class TracerBrowserSDK {
|
|
|
25268
25327
|
this.exporter = new _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionRecorderBrowserTraceExporter({
|
|
25269
25328
|
apiKey: options.apiKey,
|
|
25270
25329
|
url: (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getExporterEndpoint)(options.exporterEndpoint),
|
|
25271
|
-
usePostMessageFallback: options.usePostMessageFallback
|
|
25330
|
+
usePostMessageFallback: options.usePostMessageFallback
|
|
25272
25331
|
});
|
|
25273
|
-
this.
|
|
25274
|
-
|
|
25275
|
-
|
|
25276
|
-
[
|
|
25277
|
-
[
|
|
25332
|
+
this.batchSpanProcessor = new _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_5__.BatchSpanProcessor(this.exporter);
|
|
25333
|
+
this.tracerProvider = new _opentelemetry_sdk_trace_web__WEBPACK_IMPORTED_MODULE_6__.WebTracerProvider({
|
|
25334
|
+
resource: (0,_opentelemetry_resources__WEBPACK_IMPORTED_MODULE_7__.resourceFromAttributes)({
|
|
25335
|
+
[_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_SERVICE_NAME]: application,
|
|
25336
|
+
[_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_SERVICE_VERSION]: version,
|
|
25337
|
+
[_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: environment
|
|
25278
25338
|
}),
|
|
25279
25339
|
idGenerator: this.idGenerator,
|
|
25280
25340
|
sampler: new _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionRecorderTraceIdRatioBasedSampler(this.config.sampleTraceRatio),
|
|
25281
25341
|
spanProcessors: [
|
|
25282
25342
|
this._getSpanSessionIdProcessor(),
|
|
25283
|
-
this.
|
|
25284
|
-
|
|
25285
|
-
],
|
|
25343
|
+
new _CrashBufferSpanProcessor__WEBPACK_IMPORTED_MODULE_4__.CrashBufferSpanProcessor(this.batchSpanProcessor, this.crashBuffer, this.exporter.serializeSpan.bind(this.exporter))
|
|
25344
|
+
]
|
|
25286
25345
|
});
|
|
25287
25346
|
this.tracerProvider.register({
|
|
25288
25347
|
// contextManager: new ZoneContextManager(),
|
|
25289
|
-
propagator: new
|
|
25348
|
+
propagator: new _opentelemetry_core__WEBPACK_IMPORTED_MODULE_9__.W3CTraceContextPropagator()
|
|
25290
25349
|
});
|
|
25291
|
-
(0,
|
|
25350
|
+
(0,_opentelemetry_instrumentation__WEBPACK_IMPORTED_MODULE_10__.registerInstrumentations)({
|
|
25292
25351
|
tracerProvider: this.tracerProvider,
|
|
25293
25352
|
instrumentations: [
|
|
25294
25353
|
(0,_opentelemetry_auto_instrumentations_web__WEBPACK_IMPORTED_MODULE_0__.getWebAutoInstrumentations)({
|
|
25295
25354
|
'@opentelemetry/instrumentation-xml-http-request': {
|
|
25296
25355
|
clearTimingResources: true,
|
|
25297
|
-
ignoreUrls: [
|
|
25298
|
-
..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS,
|
|
25299
|
-
...(this.config.ignoreUrls || []),
|
|
25300
|
-
],
|
|
25356
|
+
ignoreUrls: [..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS, ...(this.config.ignoreUrls || [])],
|
|
25301
25357
|
propagateTraceHeaderCorsUrls: options.propagateTraceHeaderCorsUrls,
|
|
25302
25358
|
applyCustomAttributesOnSpan: (span, xhr) => {
|
|
25303
25359
|
if (!this.config)
|
|
@@ -25317,7 +25373,7 @@ class TracerBrowserSDK {
|
|
|
25317
25373
|
requestBody,
|
|
25318
25374
|
responseBody,
|
|
25319
25375
|
requestHeaders,
|
|
25320
|
-
responseHeaders
|
|
25376
|
+
responseHeaders
|
|
25321
25377
|
};
|
|
25322
25378
|
(0,_helpers__WEBPACK_IMPORTED_MODULE_3__.processHttpPayload)(payload, this.config, span);
|
|
25323
25379
|
}
|
|
@@ -25325,14 +25381,11 @@ class TracerBrowserSDK {
|
|
|
25325
25381
|
// eslint-disable-next-line
|
|
25326
25382
|
console.error('[MULTIPLAYER_SESSION_RECORDER] Failed to capture xml-http payload', error);
|
|
25327
25383
|
}
|
|
25328
|
-
}
|
|
25384
|
+
}
|
|
25329
25385
|
},
|
|
25330
25386
|
'@opentelemetry/instrumentation-fetch': {
|
|
25331
25387
|
clearTimingResources: true,
|
|
25332
|
-
ignoreUrls: [
|
|
25333
|
-
..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS,
|
|
25334
|
-
...(this.config.ignoreUrls || []),
|
|
25335
|
-
],
|
|
25388
|
+
ignoreUrls: [..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS, ...(this.config.ignoreUrls || [])],
|
|
25336
25389
|
propagateTraceHeaderCorsUrls: options.propagateTraceHeaderCorsUrls,
|
|
25337
25390
|
applyCustomAttributesOnSpan: async (span, request, response) => {
|
|
25338
25391
|
if (!this.config)
|
|
@@ -25369,7 +25422,7 @@ class TracerBrowserSDK {
|
|
|
25369
25422
|
requestBody,
|
|
25370
25423
|
responseBody,
|
|
25371
25424
|
requestHeaders,
|
|
25372
|
-
responseHeaders
|
|
25425
|
+
responseHeaders
|
|
25373
25426
|
};
|
|
25374
25427
|
(0,_helpers__WEBPACK_IMPORTED_MODULE_3__.processHttpPayload)(payload, this.config, span);
|
|
25375
25428
|
}
|
|
@@ -25377,7 +25430,7 @@ class TracerBrowserSDK {
|
|
|
25377
25430
|
// eslint-disable-next-line
|
|
25378
25431
|
console.error('[MULTIPLAYER_SESSION_RECORDER] Failed to capture fetch payload', error);
|
|
25379
25432
|
}
|
|
25380
|
-
}
|
|
25433
|
+
}
|
|
25381
25434
|
},
|
|
25382
25435
|
'@opentelemetry/instrumentation-user-interaction': {
|
|
25383
25436
|
shouldPreventSpanCreation: (_event, element, span) => {
|
|
@@ -25386,71 +25439,20 @@ class TracerBrowserSDK {
|
|
|
25386
25439
|
}
|
|
25387
25440
|
span.setAttribute('target.innerText', (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getElementInnerText)(element));
|
|
25388
25441
|
span.setAttribute('target.textContent', (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getElementTextContent)(element));
|
|
25389
|
-
Array.from(element.attributes).forEach(attribute => {
|
|
25442
|
+
Array.from(element.attributes).forEach((attribute) => {
|
|
25390
25443
|
span.setAttribute(`target.attribute.${attribute.name}`, attribute.value);
|
|
25391
25444
|
});
|
|
25392
25445
|
return false;
|
|
25393
|
-
}
|
|
25394
|
-
}
|
|
25395
|
-
})
|
|
25396
|
-
]
|
|
25446
|
+
}
|
|
25447
|
+
}
|
|
25448
|
+
})
|
|
25449
|
+
]
|
|
25397
25450
|
});
|
|
25398
25451
|
this._registerGlobalErrorListeners();
|
|
25399
25452
|
}
|
|
25400
25453
|
setCrashBuffer(crashBuffer) {
|
|
25401
25454
|
this.crashBuffer = crashBuffer;
|
|
25402
25455
|
}
|
|
25403
|
-
_getCrashBufferSpanProcessor() {
|
|
25404
|
-
return {
|
|
25405
|
-
onStart: () => { },
|
|
25406
|
-
onEnd: (span) => {
|
|
25407
|
-
// Only buffer spans when we don't have an active debug session.
|
|
25408
|
-
if (this.sessionId)
|
|
25409
|
-
return;
|
|
25410
|
-
if (!this.crashBuffer)
|
|
25411
|
-
return;
|
|
25412
|
-
try {
|
|
25413
|
-
const now = Date.now();
|
|
25414
|
-
this.crashBuffer.appendOtelSpan({
|
|
25415
|
-
ts: now,
|
|
25416
|
-
span: this._serializeSpan(span),
|
|
25417
|
-
});
|
|
25418
|
-
}
|
|
25419
|
-
catch (_e) {
|
|
25420
|
-
// ignore
|
|
25421
|
-
}
|
|
25422
|
-
},
|
|
25423
|
-
shutdown: () => Promise.resolve(),
|
|
25424
|
-
forceFlush: () => Promise.resolve(),
|
|
25425
|
-
};
|
|
25426
|
-
}
|
|
25427
|
-
_serializeSpan(span) {
|
|
25428
|
-
var _a, _b;
|
|
25429
|
-
const spanContext = ((_a = span === null || span === void 0 ? void 0 : span.spanContext) === null || _a === void 0 ? void 0 : _a.call(span))
|
|
25430
|
-
? span.spanContext()
|
|
25431
|
-
: span === null || span === void 0 ? void 0 : span._spanContext;
|
|
25432
|
-
return {
|
|
25433
|
-
_spanContext: spanContext,
|
|
25434
|
-
name: span === null || span === void 0 ? void 0 : span.name,
|
|
25435
|
-
kind: span === null || span === void 0 ? void 0 : span.kind,
|
|
25436
|
-
links: span === null || span === void 0 ? void 0 : span.links,
|
|
25437
|
-
ended: span === null || span === void 0 ? void 0 : span.ended,
|
|
25438
|
-
events: span === null || span === void 0 ? void 0 : span.events,
|
|
25439
|
-
status: span === null || span === void 0 ? void 0 : span.status,
|
|
25440
|
-
endTime: span === null || span === void 0 ? void 0 : span.endTime,
|
|
25441
|
-
startTime: span === null || span === void 0 ? void 0 : span.startTime,
|
|
25442
|
-
duration: span === null || span === void 0 ? void 0 : span.duration,
|
|
25443
|
-
attributes: span === null || span === void 0 ? void 0 : span.attributes,
|
|
25444
|
-
parentSpanId: (_b = span === null || span === void 0 ? void 0 : span.parentSpanContext) === null || _b === void 0 ? void 0 : _b.spanId,
|
|
25445
|
-
droppedAttributesCount: span === null || span === void 0 ? void 0 : span.droppedAttributesCount,
|
|
25446
|
-
droppedEventsCount: span === null || span === void 0 ? void 0 : span.droppedEventsCount,
|
|
25447
|
-
droppedLinksCount: span === null || span === void 0 ? void 0 : span.droppedLinksCount,
|
|
25448
|
-
resource: (span === null || span === void 0 ? void 0 : span.resource) ? {
|
|
25449
|
-
attributes: span.resource.attributes,
|
|
25450
|
-
asyncAttributesPending: span.resource.asyncAttributesPending,
|
|
25451
|
-
} : undefined,
|
|
25452
|
-
};
|
|
25453
|
-
}
|
|
25454
25456
|
start(sessionId, sessionType) {
|
|
25455
25457
|
if (!this.tracerProvider) {
|
|
25456
25458
|
throw new Error('Configuration not initialized. Call init() before start().');
|
|
@@ -25475,13 +25477,15 @@ class TracerBrowserSDK {
|
|
|
25475
25477
|
* Otherwise, a short-lived span will be created to hold the exception event.
|
|
25476
25478
|
*/
|
|
25477
25479
|
captureException(error, errorInfo) {
|
|
25480
|
+
var _a, _b;
|
|
25478
25481
|
if (!error)
|
|
25479
25482
|
return;
|
|
25480
25483
|
// Prefer attaching to the active span to keep correlation intact
|
|
25481
25484
|
try {
|
|
25482
|
-
const activeSpan =
|
|
25485
|
+
const activeSpan = _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__.trace.getSpan(_opentelemetry_api__WEBPACK_IMPORTED_MODULE_12__.context.active());
|
|
25483
25486
|
if (activeSpan) {
|
|
25484
25487
|
this._recordException(activeSpan, error, errorInfo);
|
|
25488
|
+
(_a = this.tracerProvider) === null || _a === void 0 ? void 0 : _a.forceFlush();
|
|
25485
25489
|
return;
|
|
25486
25490
|
}
|
|
25487
25491
|
// eslint-disable-next-line
|
|
@@ -25489,17 +25493,26 @@ class TracerBrowserSDK {
|
|
|
25489
25493
|
catch (_ignored) { }
|
|
25490
25494
|
// Fallback: create a short-lived span to hold the exception details
|
|
25491
25495
|
try {
|
|
25492
|
-
const tracer =
|
|
25496
|
+
const tracer = _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__.trace.getTracer('exception');
|
|
25493
25497
|
const span = tracer.startSpan(error.name || 'Error');
|
|
25494
25498
|
this._recordException(span, error, errorInfo);
|
|
25495
25499
|
span.end();
|
|
25500
|
+
(_b = this.tracerProvider) === null || _b === void 0 ? void 0 : _b.forceFlush();
|
|
25496
25501
|
// eslint-disable-next-line
|
|
25497
25502
|
}
|
|
25498
25503
|
catch (_ignored) { }
|
|
25499
25504
|
}
|
|
25505
|
+
async exportTraces(spans) {
|
|
25506
|
+
var _a;
|
|
25507
|
+
if ((_a = this === null || this === void 0 ? void 0 : this.batchSpanProcessor) === null || _a === void 0 ? void 0 : _a.onEnd) {
|
|
25508
|
+
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); });
|
|
25509
|
+
// return this.batchSpanProcessor.onEnd()
|
|
25510
|
+
}
|
|
25511
|
+
throw new Error('Buffer span processor not initialized');
|
|
25512
|
+
}
|
|
25500
25513
|
_recordException(span, error, errorInfo) {
|
|
25501
25514
|
span.recordException(error);
|
|
25502
|
-
span.setStatus({ code:
|
|
25515
|
+
span.setStatus({ code: _opentelemetry_api__WEBPACK_IMPORTED_MODULE_13__.SpanStatusCode.ERROR, message: error.message });
|
|
25503
25516
|
span.setAttribute('exception.type', error.name || 'Error');
|
|
25504
25517
|
span.setAttribute('exception.message', error.message);
|
|
25505
25518
|
span.setAttribute('exception.stacktrace', error.stack || '');
|
|
@@ -25512,14 +25525,14 @@ class TracerBrowserSDK {
|
|
|
25512
25525
|
_getSpanSessionIdProcessor() {
|
|
25513
25526
|
return {
|
|
25514
25527
|
forceFlush: () => Promise.resolve(),
|
|
25515
|
-
onEnd: () =>
|
|
25528
|
+
onEnd: () => Promise.resolve(),
|
|
25516
25529
|
shutdown: () => Promise.resolve(),
|
|
25517
25530
|
onStart: (span) => {
|
|
25518
25531
|
var _a;
|
|
25519
25532
|
if ((_a = this.sessionId) === null || _a === void 0 ? void 0 : _a.length) {
|
|
25520
25533
|
span.setAttribute(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.ATTR_MULTIPLAYER_SESSION_ID, this.sessionId);
|
|
25521
25534
|
}
|
|
25522
|
-
}
|
|
25535
|
+
}
|
|
25523
25536
|
};
|
|
25524
25537
|
}
|
|
25525
25538
|
_registerGlobalErrorListeners() {
|
|
@@ -25529,14 +25542,12 @@ class TracerBrowserSDK {
|
|
|
25529
25542
|
return;
|
|
25530
25543
|
// eslint-disable-next-line
|
|
25531
25544
|
const errorHandler = (event) => {
|
|
25532
|
-
const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error
|
|
25533
|
-
? event.error
|
|
25534
|
-
: new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
|
|
25545
|
+
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');
|
|
25535
25546
|
this.captureException(err);
|
|
25536
25547
|
};
|
|
25537
25548
|
// eslint-disable-next-line
|
|
25538
25549
|
const rejectionHandler = (event) => {
|
|
25539
|
-
const reason =
|
|
25550
|
+
const reason = event && 'reason' in event ? event.reason : undefined;
|
|
25540
25551
|
const err = reason instanceof Error
|
|
25541
25552
|
? reason
|
|
25542
25553
|
: new Error(typeof reason === 'string' ? reason : 'Unhandled promise rejection');
|
|
@@ -25984,7 +25995,7 @@ class RecorderBrowserSDK {
|
|
|
25984
25995
|
constructor() {
|
|
25985
25996
|
this.intervals = {
|
|
25986
25997
|
restart: null,
|
|
25987
|
-
bufferSnapshot: null
|
|
25998
|
+
bufferSnapshot: null
|
|
25988
25999
|
};
|
|
25989
26000
|
this.startedAt = '';
|
|
25990
26001
|
this.stoppedAt = '';
|
|
@@ -25993,6 +26004,9 @@ class RecorderBrowserSDK {
|
|
|
25993
26004
|
* Full snapshot.
|
|
25994
26005
|
*/
|
|
25995
26006
|
takeFullSnapshot() {
|
|
26007
|
+
if (!this.stopFn) {
|
|
26008
|
+
return;
|
|
26009
|
+
}
|
|
25996
26010
|
rrweb__WEBPACK_IMPORTED_MODULE_6__.record.takeFullSnapshot();
|
|
25997
26011
|
}
|
|
25998
26012
|
/**
|
|
@@ -26023,7 +26037,7 @@ class RecorderBrowserSDK {
|
|
|
26023
26037
|
return;
|
|
26024
26038
|
}
|
|
26025
26039
|
this._handleLiveSessionEvent(event, ts, sessionId, sessionType);
|
|
26026
|
-
}
|
|
26040
|
+
}
|
|
26027
26041
|
});
|
|
26028
26042
|
this.takeFullSnapshot();
|
|
26029
26043
|
this._setupPeriodicSnapshots(sessionId, sessionType);
|
|
@@ -26047,6 +26061,7 @@ class RecorderBrowserSDK {
|
|
|
26047
26061
|
stop() {
|
|
26048
26062
|
var _a, _b, _c;
|
|
26049
26063
|
(_a = this.stopFn) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
26064
|
+
this.stopFn = undefined;
|
|
26050
26065
|
if (!((_b = this.config) === null || _b === void 0 ? void 0 : _b.useWebsocket)) {
|
|
26051
26066
|
(_c = this.socketService) === null || _c === void 0 ? void 0 : _c.close();
|
|
26052
26067
|
}
|
|
@@ -26093,14 +26108,14 @@ class RecorderBrowserSDK {
|
|
|
26093
26108
|
this._applyConsoleMasking(event);
|
|
26094
26109
|
const packedEvent = (0,_rrweb_packer__WEBPACK_IMPORTED_MODULE_0__.pack)(event);
|
|
26095
26110
|
this.stoppedAt = new Date(ts).toISOString();
|
|
26096
|
-
await this.crashBuffer.
|
|
26111
|
+
await this.crashBuffer.appendEvent({
|
|
26097
26112
|
ts,
|
|
26098
26113
|
isFullSnapshot: event.type === _rrweb_types__WEBPACK_IMPORTED_MODULE_1__.EventType.FullSnapshot,
|
|
26099
26114
|
event: {
|
|
26100
26115
|
event: packedEvent,
|
|
26101
26116
|
eventType: event.type,
|
|
26102
|
-
timestamp: ts
|
|
26103
|
-
}
|
|
26117
|
+
timestamp: ts
|
|
26118
|
+
}
|
|
26104
26119
|
});
|
|
26105
26120
|
}
|
|
26106
26121
|
catch (error) {
|
|
@@ -26125,7 +26140,7 @@ class RecorderBrowserSDK {
|
|
|
26125
26140
|
eventType: event.type,
|
|
26126
26141
|
timestamp: ts,
|
|
26127
26142
|
debugSessionId: sessionId,
|
|
26128
|
-
debugSessionType: sessionType
|
|
26143
|
+
debugSessionType: sessionType
|
|
26129
26144
|
});
|
|
26130
26145
|
}
|
|
26131
26146
|
/**
|
|
@@ -26139,7 +26154,7 @@ class RecorderBrowserSDK {
|
|
|
26139
26154
|
sampling: { canvas: 5 },
|
|
26140
26155
|
recordCanvas: (_c = this.config) === null || _c === void 0 ? void 0 : _c.recordCanvas,
|
|
26141
26156
|
dataURLOptions: { type: 'image/webp', quality: 0.1 },
|
|
26142
|
-
plugins: [(0,_rrweb_rrweb_plugin_console_record__WEBPACK_IMPORTED_MODULE_3__.getRecordConsolePlugin)({ level: ['log', 'error'] })]
|
|
26157
|
+
plugins: [(0,_rrweb_rrweb_plugin_console_record__WEBPACK_IMPORTED_MODULE_3__.getRecordConsolePlugin)({ level: ['log', 'error'] })]
|
|
26143
26158
|
};
|
|
26144
26159
|
if (maskingConfig.maskInputOptions) {
|
|
26145
26160
|
options.maskInputOptions = maskingConfig.maskInputOptions;
|
|
@@ -26200,7 +26215,7 @@ class ApiService {
|
|
|
26200
26215
|
this.config = {
|
|
26201
26216
|
apiKey: '',
|
|
26202
26217
|
apiBaseUrl: '',
|
|
26203
|
-
exporterEndpoint: ''
|
|
26218
|
+
exporterEndpoint: ''
|
|
26204
26219
|
};
|
|
26205
26220
|
}
|
|
26206
26221
|
/**
|
|
@@ -26210,7 +26225,7 @@ class ApiService {
|
|
|
26210
26225
|
init(config) {
|
|
26211
26226
|
this.config = {
|
|
26212
26227
|
...this.config,
|
|
26213
|
-
...config
|
|
26228
|
+
...config
|
|
26214
26229
|
};
|
|
26215
26230
|
}
|
|
26216
26231
|
/**
|
|
@@ -26228,6 +26243,14 @@ class ApiService {
|
|
|
26228
26243
|
async startSession(request, signal) {
|
|
26229
26244
|
return this.makeRequest('/debug-sessions/start', 'POST', request, signal);
|
|
26230
26245
|
}
|
|
26246
|
+
/**
|
|
26247
|
+
* Create a new error span session
|
|
26248
|
+
* @param request - Session create error span request data
|
|
26249
|
+
* @param signal - Optional AbortSignal for request cancellation
|
|
26250
|
+
*/
|
|
26251
|
+
async createErrorSession(request, signal) {
|
|
26252
|
+
return this.makeRequest('/debug-sessions/error-span/start', 'POST', request, signal);
|
|
26253
|
+
}
|
|
26231
26254
|
/**
|
|
26232
26255
|
* Stop an active debug session
|
|
26233
26256
|
* @param sessionId - ID of the session to stop
|
|
@@ -26273,6 +26296,15 @@ class ApiService {
|
|
|
26273
26296
|
async checkRemoteSession(requestBody, signal) {
|
|
26274
26297
|
return this.makeRequest('/remote-debug-session/check', 'POST', requestBody, signal);
|
|
26275
26298
|
}
|
|
26299
|
+
updateSessionAttributes(sessionId, requestBody, signal) {
|
|
26300
|
+
return this.makeRequest(`/debug-sessions/${sessionId}`, 'PATCH', requestBody, signal);
|
|
26301
|
+
}
|
|
26302
|
+
/**
|
|
26303
|
+
* Export events to the session debugger API
|
|
26304
|
+
*/
|
|
26305
|
+
async exportEvents(sessionId, requestBody, signal) {
|
|
26306
|
+
return this.makeRequest(`/debug-sessions/${sessionId}/rrweb-events`, 'POST', requestBody, signal);
|
|
26307
|
+
}
|
|
26276
26308
|
/**
|
|
26277
26309
|
* Make a request to the session debugger API
|
|
26278
26310
|
* @param path - API endpoint path (relative to the base URL)
|
|
@@ -26287,14 +26319,14 @@ class ApiService {
|
|
|
26287
26319
|
body: body ? JSON.stringify(body) : null,
|
|
26288
26320
|
headers: {
|
|
26289
26321
|
'Content-Type': 'application/json',
|
|
26290
|
-
...(this.config.apiKey && { 'X-Api-Key': this.config.apiKey })
|
|
26291
|
-
}
|
|
26322
|
+
...(this.config.apiKey && { 'X-Api-Key': this.config.apiKey })
|
|
26323
|
+
}
|
|
26292
26324
|
};
|
|
26293
26325
|
try {
|
|
26294
26326
|
const response = await fetch(url, {
|
|
26295
26327
|
...params,
|
|
26296
26328
|
credentials: 'include',
|
|
26297
|
-
signal
|
|
26329
|
+
signal
|
|
26298
26330
|
});
|
|
26299
26331
|
if (!response.ok) {
|
|
26300
26332
|
throw new Error('Network response was not ok: ' + response.statusText);
|
|
@@ -26340,6 +26372,8 @@ class ApiService {
|
|
|
26340
26372
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
26341
26373
|
/* harmony export */ CrashBufferService: () => (/* binding */ CrashBufferService)
|
|
26342
26374
|
/* harmony export */ });
|
|
26375
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/status.js");
|
|
26376
|
+
|
|
26343
26377
|
class CrashBufferService {
|
|
26344
26378
|
constructor(db, tabId, windowMs) {
|
|
26345
26379
|
this.db = db;
|
|
@@ -26352,6 +26386,7 @@ class CrashBufferService {
|
|
|
26352
26386
|
this.lastSeenEventTs = 0;
|
|
26353
26387
|
this.requiresFullSnapshot = true;
|
|
26354
26388
|
this.lastTouchAt = 0;
|
|
26389
|
+
this.listeners = new Map();
|
|
26355
26390
|
}
|
|
26356
26391
|
async _safe(fn, fallback) {
|
|
26357
26392
|
try {
|
|
@@ -26365,11 +26400,11 @@ class CrashBufferService {
|
|
|
26365
26400
|
await this._safe(async () => {
|
|
26366
26401
|
await this.db.setAttrs({
|
|
26367
26402
|
tabId: this.tabId,
|
|
26368
|
-
...attrs
|
|
26403
|
+
...attrs
|
|
26369
26404
|
});
|
|
26370
26405
|
}, undefined);
|
|
26371
26406
|
}
|
|
26372
|
-
async
|
|
26407
|
+
async appendEvent(payload, _windowMs) {
|
|
26373
26408
|
this.lastSeenEventTs = Math.max(this.lastSeenEventTs, payload.ts || 0);
|
|
26374
26409
|
if (!this.isActive)
|
|
26375
26410
|
return;
|
|
@@ -26379,11 +26414,11 @@ class CrashBufferService {
|
|
|
26379
26414
|
return;
|
|
26380
26415
|
}
|
|
26381
26416
|
await this._safe(async () => {
|
|
26382
|
-
await this.db.
|
|
26417
|
+
await this.db.appendEvent({
|
|
26383
26418
|
tabId: this.tabId,
|
|
26384
26419
|
ts: payload.ts,
|
|
26385
26420
|
isFullSnapshot: payload.isFullSnapshot,
|
|
26386
|
-
event: payload.event
|
|
26421
|
+
event: payload.event
|
|
26387
26422
|
});
|
|
26388
26423
|
}, undefined);
|
|
26389
26424
|
if (isFullSnapshot && this.requiresFullSnapshot) {
|
|
@@ -26397,20 +26432,61 @@ class CrashBufferService {
|
|
|
26397
26432
|
}
|
|
26398
26433
|
this.pruneSoon();
|
|
26399
26434
|
}
|
|
26400
|
-
async
|
|
26401
|
-
|
|
26435
|
+
async appendSpans(payload, _windowMs) {
|
|
26436
|
+
for (const p of payload) {
|
|
26437
|
+
this.lastSeenEventTs = Math.max(this.lastSeenEventTs, p.ts || 0);
|
|
26438
|
+
}
|
|
26402
26439
|
if (!this.isActive)
|
|
26403
26440
|
return;
|
|
26441
|
+
let errorEvent = null;
|
|
26404
26442
|
await this._safe(async () => {
|
|
26405
|
-
|
|
26406
|
-
|
|
26407
|
-
|
|
26408
|
-
|
|
26443
|
+
const records = payload.map((p) => {
|
|
26444
|
+
var _a, _b;
|
|
26445
|
+
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) {
|
|
26446
|
+
errorEvent = { ts: p.ts, span: p.span };
|
|
26447
|
+
}
|
|
26448
|
+
return {
|
|
26449
|
+
tabId: this.tabId,
|
|
26450
|
+
ts: p.ts,
|
|
26451
|
+
span: p.span
|
|
26452
|
+
};
|
|
26409
26453
|
});
|
|
26454
|
+
await this.db.appendSpans(records);
|
|
26410
26455
|
}, undefined);
|
|
26411
26456
|
this.pruneSoon();
|
|
26457
|
+
if (errorEvent) {
|
|
26458
|
+
this._emit('error-span-appended', errorEvent);
|
|
26459
|
+
}
|
|
26460
|
+
}
|
|
26461
|
+
on(event, listener) {
|
|
26462
|
+
const set = this.listeners.get(event) || new Set();
|
|
26463
|
+
set.add(listener);
|
|
26464
|
+
this.listeners.set(event, set);
|
|
26465
|
+
return () => this.off(event, listener);
|
|
26466
|
+
}
|
|
26467
|
+
off(event, listener) {
|
|
26468
|
+
const set = this.listeners.get(event);
|
|
26469
|
+
if (!set)
|
|
26470
|
+
return;
|
|
26471
|
+
set.delete(listener);
|
|
26472
|
+
if (set.size === 0)
|
|
26473
|
+
this.listeners.delete(event);
|
|
26474
|
+
}
|
|
26475
|
+
_emit(event, payload) {
|
|
26476
|
+
const set = this.listeners.get(event);
|
|
26477
|
+
if (!set || set.size === 0)
|
|
26478
|
+
return;
|
|
26479
|
+
for (const fn of Array.from(set)) {
|
|
26480
|
+
try {
|
|
26481
|
+
;
|
|
26482
|
+
fn(payload);
|
|
26483
|
+
}
|
|
26484
|
+
catch (_e) {
|
|
26485
|
+
// never throw into app code
|
|
26486
|
+
}
|
|
26487
|
+
}
|
|
26412
26488
|
}
|
|
26413
|
-
async snapshot(now = Date.now()) {
|
|
26489
|
+
async snapshot(_windowMs, now = Date.now()) {
|
|
26414
26490
|
const toTs = now;
|
|
26415
26491
|
const fromTs = Math.max(0, toTs - this.windowMs);
|
|
26416
26492
|
// Always include a full snapshot "anchor" if one exists at/before the window start.
|
|
@@ -26421,7 +26497,7 @@ class CrashBufferService {
|
|
|
26421
26497
|
const [rrweb, spans, attrs] = await Promise.all([
|
|
26422
26498
|
this._safe(() => this.db.getRrwebEventsWindow(this.tabId, rrwebFromTs, toTs), []),
|
|
26423
26499
|
this._safe(() => this.db.getOtelSpansWindow(this.tabId, fromTs, toTs), []),
|
|
26424
|
-
this._safe(() => this.db.getAttrs(this.tabId), null)
|
|
26500
|
+
this._safe(() => this.db.getAttrs(this.tabId), null)
|
|
26425
26501
|
]);
|
|
26426
26502
|
const rrwebSorted = rrweb
|
|
26427
26503
|
.sort((a, b) => a.ts - b.ts)
|
|
@@ -26438,14 +26514,16 @@ class CrashBufferService {
|
|
|
26438
26514
|
return {
|
|
26439
26515
|
rrwebEvents,
|
|
26440
26516
|
otelSpans,
|
|
26441
|
-
attrs: attrs
|
|
26442
|
-
|
|
26443
|
-
|
|
26444
|
-
|
|
26445
|
-
|
|
26517
|
+
attrs: attrs
|
|
26518
|
+
? {
|
|
26519
|
+
sessionAttributes: attrs.sessionAttributes,
|
|
26520
|
+
resourceAttributes: attrs.resourceAttributes,
|
|
26521
|
+
userAttributes: attrs.userAttributes
|
|
26522
|
+
}
|
|
26523
|
+
: null,
|
|
26446
26524
|
windowMs: this.windowMs,
|
|
26447
26525
|
fromTs: replayStartTs,
|
|
26448
|
-
toTs
|
|
26526
|
+
toTs
|
|
26449
26527
|
};
|
|
26450
26528
|
}
|
|
26451
26529
|
async clear() {
|
|
@@ -26496,8 +26574,9 @@ class CrashBufferService {
|
|
|
26496
26574
|
this.lastTouchAt = now;
|
|
26497
26575
|
void this._safe(() => this.db.touchTab(this.tabId, now), undefined);
|
|
26498
26576
|
}
|
|
26499
|
-
this.pruneInFlight = this._safe(() => this.db.pruneOlderThanWithRrwebSnapshotAnchor(this.tabId, cutoff), undefined)
|
|
26500
|
-
|
|
26577
|
+
this.pruneInFlight = this._safe(() => this.db.pruneOlderThanWithRrwebSnapshotAnchor(this.tabId, cutoff), undefined).finally(() => {
|
|
26578
|
+
this.pruneInFlight = null;
|
|
26579
|
+
});
|
|
26501
26580
|
}
|
|
26502
26581
|
}
|
|
26503
26582
|
|
|
@@ -26550,7 +26629,7 @@ class IndexedDBService {
|
|
|
26550
26629
|
});
|
|
26551
26630
|
}
|
|
26552
26631
|
/**
|
|
26553
|
-
* @deprecated Prefer `
|
|
26632
|
+
* @deprecated Prefer `appendEvent(tabId, ...)` and `getRrwebEventsWindow(...)`.
|
|
26554
26633
|
* This writes into the legacy store with no pruning semantics.
|
|
26555
26634
|
*/
|
|
26556
26635
|
async saveEvent(event) {
|
|
@@ -26597,7 +26676,7 @@ class IndexedDBService {
|
|
|
26597
26676
|
const db = await this.dbPromise;
|
|
26598
26677
|
const payload = {
|
|
26599
26678
|
...attrs,
|
|
26600
|
-
updatedAt: (_a = attrs.updatedAt) !== null && _a !== void 0 ? _a : Date.now()
|
|
26679
|
+
updatedAt: (_a = attrs.updatedAt) !== null && _a !== void 0 ? _a : Date.now()
|
|
26601
26680
|
};
|
|
26602
26681
|
return new Promise((resolve, reject) => {
|
|
26603
26682
|
const tx = db.transaction(attrsStore, 'readwrite');
|
|
@@ -26635,9 +26714,7 @@ class IndexedDBService {
|
|
|
26635
26714
|
const getReq = store.get(tabId);
|
|
26636
26715
|
getReq.onsuccess = () => {
|
|
26637
26716
|
const existing = (getReq.result || null);
|
|
26638
|
-
const next = existing
|
|
26639
|
-
? { ...existing, updatedAt }
|
|
26640
|
-
: { tabId, updatedAt };
|
|
26717
|
+
const next = existing ? { ...existing, updatedAt } : { tabId, updatedAt };
|
|
26641
26718
|
store.put(next);
|
|
26642
26719
|
};
|
|
26643
26720
|
getReq.onerror = () => reject(getReq.error);
|
|
@@ -26668,7 +26745,7 @@ class IndexedDBService {
|
|
|
26668
26745
|
}
|
|
26669
26746
|
return cleared;
|
|
26670
26747
|
}
|
|
26671
|
-
async
|
|
26748
|
+
async appendEvent(record) {
|
|
26672
26749
|
const db = await this.dbPromise;
|
|
26673
26750
|
return new Promise((resolve, reject) => {
|
|
26674
26751
|
const tx = db.transaction(rrwebEventsStore, 'readwrite');
|
|
@@ -26677,11 +26754,16 @@ class IndexedDBService {
|
|
|
26677
26754
|
tx.onerror = () => reject(tx.error);
|
|
26678
26755
|
});
|
|
26679
26756
|
}
|
|
26680
|
-
async
|
|
26757
|
+
async appendSpans(records) {
|
|
26758
|
+
if (!records.length)
|
|
26759
|
+
return;
|
|
26681
26760
|
const db = await this.dbPromise;
|
|
26682
26761
|
return new Promise((resolve, reject) => {
|
|
26683
26762
|
const tx = db.transaction(otelSpansStore, 'readwrite');
|
|
26684
|
-
tx.objectStore(otelSpansStore)
|
|
26763
|
+
const store = tx.objectStore(otelSpansStore);
|
|
26764
|
+
for (const record of records) {
|
|
26765
|
+
store.add(record);
|
|
26766
|
+
}
|
|
26685
26767
|
tx.oncomplete = () => resolve();
|
|
26686
26768
|
tx.onerror = () => reject(tx.error);
|
|
26687
26769
|
});
|
|
@@ -26757,12 +26839,11 @@ class IndexedDBService {
|
|
|
26757
26839
|
const tx = db.transaction([rrwebEventsStore, otelSpansStore], 'readwrite');
|
|
26758
26840
|
const rrwebStore = tx.objectStore(rrwebEventsStore);
|
|
26759
26841
|
const spanStore = tx.objectStore(otelSpansStore);
|
|
26760
|
-
Promise.all([
|
|
26761
|
-
|
|
26762
|
-
pruneStore(spanStore, spansRange),
|
|
26763
|
-
]).then(() => {
|
|
26842
|
+
Promise.all([pruneStore(rrwebStore, rrwebRange), pruneStore(spanStore, spansRange)])
|
|
26843
|
+
.then(() => {
|
|
26764
26844
|
// noop; completion is signaled by tx.oncomplete
|
|
26765
|
-
})
|
|
26845
|
+
})
|
|
26846
|
+
.catch((e) => {
|
|
26766
26847
|
reject(e);
|
|
26767
26848
|
});
|
|
26768
26849
|
tx.oncomplete = () => resolve();
|
|
@@ -26800,12 +26881,11 @@ class IndexedDBService {
|
|
|
26800
26881
|
const tx = db.transaction([rrwebEventsStore, otelSpansStore], 'readwrite');
|
|
26801
26882
|
const rrwebStore = tx.objectStore(rrwebEventsStore);
|
|
26802
26883
|
const spanStore = tx.objectStore(otelSpansStore);
|
|
26803
|
-
Promise.all([
|
|
26804
|
-
|
|
26805
|
-
pruneStore(spanStore, spansRange),
|
|
26806
|
-
]).then(() => {
|
|
26884
|
+
Promise.all([pruneStore(rrwebStore, rrwebRange), pruneStore(spanStore, spansRange)])
|
|
26885
|
+
.then(() => {
|
|
26807
26886
|
// noop
|
|
26808
|
-
})
|
|
26887
|
+
})
|
|
26888
|
+
.catch((e) => reject(e));
|
|
26809
26889
|
tx.oncomplete = () => resolve();
|
|
26810
26890
|
tx.onerror = () => reject(tx.error);
|
|
26811
26891
|
});
|
|
@@ -26839,10 +26919,12 @@ class IndexedDBService {
|
|
|
26839
26919
|
const r = attr.delete(tabId);
|
|
26840
26920
|
r.onsuccess = () => res();
|
|
26841
26921
|
r.onerror = () => rej(r.error);
|
|
26842
|
-
})
|
|
26843
|
-
])
|
|
26922
|
+
})
|
|
26923
|
+
])
|
|
26924
|
+
.then(() => {
|
|
26844
26925
|
// noop
|
|
26845
|
-
})
|
|
26926
|
+
})
|
|
26927
|
+
.catch((e) => reject(e));
|
|
26846
26928
|
tx.oncomplete = () => resolve();
|
|
26847
26929
|
tx.onerror = () => reject(tx.error);
|
|
26848
26930
|
});
|
|
@@ -27267,17 +27349,13 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27267
27349
|
return this._sessionAttributes || {};
|
|
27268
27350
|
}
|
|
27269
27351
|
set sessionAttributes(attributes) {
|
|
27270
|
-
var _a;
|
|
27271
27352
|
this._sessionAttributes = attributes;
|
|
27272
|
-
(_a = this._crashBuffer) === null || _a === void 0 ? void 0 : _a.setAttrs({ sessionAttributes: this.sessionAttributes });
|
|
27273
27353
|
}
|
|
27274
27354
|
get userAttributes() {
|
|
27275
27355
|
return this._userAttributes;
|
|
27276
27356
|
}
|
|
27277
27357
|
set userAttributes(userAttributes) {
|
|
27278
|
-
var _a;
|
|
27279
27358
|
this._userAttributes = userAttributes;
|
|
27280
|
-
(_a = this._crashBuffer) === null || _a === void 0 ? void 0 : _a.setAttrs({ userAttributes: this._userAttributes });
|
|
27281
27359
|
}
|
|
27282
27360
|
get error() {
|
|
27283
27361
|
return this._error;
|
|
@@ -27347,7 +27425,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27347
27425
|
}
|
|
27348
27426
|
this._configs = {
|
|
27349
27427
|
..._config__WEBPACK_IMPORTED_MODULE_5__.BASE_CONFIG,
|
|
27350
|
-
apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || ''
|
|
27428
|
+
apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || ''
|
|
27351
27429
|
};
|
|
27352
27430
|
}
|
|
27353
27431
|
/**
|
|
@@ -27355,7 +27433,6 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27355
27433
|
* @param configs - custom configurations for session debugger
|
|
27356
27434
|
*/
|
|
27357
27435
|
init(configs) {
|
|
27358
|
-
var _a;
|
|
27359
27436
|
if (typeof window === 'undefined') {
|
|
27360
27437
|
return;
|
|
27361
27438
|
}
|
|
@@ -27367,26 +27444,41 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27367
27444
|
void this._bufferDb.sweepStaleTabs(24 * 60 * 60 * 1000);
|
|
27368
27445
|
(0,_patch__WEBPACK_IMPORTED_MODULE_6__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
|
|
27369
27446
|
(0,_patch__WEBPACK_IMPORTED_MODULE_6__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
|
|
27447
|
+
this._setupCrashBuffer();
|
|
27370
27448
|
this._tracer.init(this._configs);
|
|
27371
27449
|
this._apiService.init(this._configs);
|
|
27372
27450
|
this._sessionWidget.init(this._configs);
|
|
27373
27451
|
this._socketService.init({
|
|
27374
|
-
clientId: this._tracer.clientId,
|
|
27375
27452
|
apiKey: this._configs.apiKey,
|
|
27453
|
+
clientId: this._tracer.clientId,
|
|
27376
27454
|
socketUrl: this._configs.apiBaseUrl || '',
|
|
27377
27455
|
keepAlive: Boolean(this._configs.useWebsocket),
|
|
27378
|
-
usePostMessageFallback: Boolean(this._configs.usePostMessageFallback)
|
|
27456
|
+
usePostMessageFallback: Boolean(this._configs.usePostMessageFallback)
|
|
27379
27457
|
});
|
|
27380
27458
|
this._navigationRecorder.init({
|
|
27381
27459
|
version: this._configs.version,
|
|
27382
27460
|
application: this._configs.application,
|
|
27383
27461
|
environment: this._configs.environment,
|
|
27384
|
-
enabled: this._configs.recordNavigation
|
|
27462
|
+
enabled: this._configs.recordNavigation
|
|
27385
27463
|
});
|
|
27386
27464
|
if (this._configs.apiKey) {
|
|
27387
27465
|
this._recorder.init(this._configs, this._socketService);
|
|
27388
27466
|
}
|
|
27389
|
-
|
|
27467
|
+
if (this.sessionId && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.started || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.paused)) {
|
|
27468
|
+
this._start();
|
|
27469
|
+
}
|
|
27470
|
+
else {
|
|
27471
|
+
// Buffer-only recording when there is no active debug session.
|
|
27472
|
+
this._startBufferOnlyRecording();
|
|
27473
|
+
}
|
|
27474
|
+
this._registerWidgetEvents();
|
|
27475
|
+
this._registerSocketServiceListeners();
|
|
27476
|
+
_services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
|
|
27477
|
+
// Emit init observable event
|
|
27478
|
+
this.emit('init', [this]);
|
|
27479
|
+
}
|
|
27480
|
+
_setupCrashBuffer() {
|
|
27481
|
+
var _a;
|
|
27390
27482
|
if ((_a = this._configs.buffering) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
27391
27483
|
const windowMinutes = this._configs.buffering.windowMinutes || 1;
|
|
27392
27484
|
const windowMs = Math.max(10000, windowMinutes * 60 * 1000);
|
|
@@ -27396,24 +27488,17 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27396
27488
|
this._crashBuffer.setAttrs({
|
|
27397
27489
|
sessionAttributes: this.sessionAttributes,
|
|
27398
27490
|
resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
|
|
27399
|
-
userAttributes: this._userAttributes
|
|
27491
|
+
userAttributes: this._userAttributes
|
|
27492
|
+
});
|
|
27493
|
+
this._crashBuffer.on('error-span-appended', (payload) => {
|
|
27494
|
+
if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped || this.sessionId)
|
|
27495
|
+
return;
|
|
27496
|
+
if (!payload.span)
|
|
27497
|
+
return;
|
|
27498
|
+
this._createExceptionSession(payload.span);
|
|
27400
27499
|
});
|
|
27401
27500
|
this._registerCrashBufferLifecycleHandlers();
|
|
27402
27501
|
}
|
|
27403
|
-
if (this.sessionId
|
|
27404
|
-
&& (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.started
|
|
27405
|
-
|| this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.paused)) {
|
|
27406
|
-
this._start();
|
|
27407
|
-
}
|
|
27408
|
-
else {
|
|
27409
|
-
// Buffer-only recording when there is no active debug session.
|
|
27410
|
-
this._startBufferOnlyRecording();
|
|
27411
|
-
}
|
|
27412
|
-
this._registerWidgetEvents();
|
|
27413
|
-
this._registerSocketServiceListeners();
|
|
27414
|
-
_services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
|
|
27415
|
-
// Emit init observable event
|
|
27416
|
-
this.emit('init', [this]);
|
|
27417
27502
|
}
|
|
27418
27503
|
_registerCrashBufferLifecycleHandlers() {
|
|
27419
27504
|
if (this._bufferLifecycleHandlersRegistered)
|
|
@@ -27485,8 +27570,9 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27485
27570
|
type: 'success',
|
|
27486
27571
|
message: 'Your session was saved',
|
|
27487
27572
|
button: {
|
|
27488
|
-
text: 'Open session',
|
|
27489
|
-
|
|
27573
|
+
text: 'Open session',
|
|
27574
|
+
url: sessionUrl
|
|
27575
|
+
}
|
|
27490
27576
|
}, 5000);
|
|
27491
27577
|
return res;
|
|
27492
27578
|
}
|
|
@@ -27535,7 +27621,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27535
27621
|
else {
|
|
27536
27622
|
const request = {
|
|
27537
27623
|
sessionAttributes: { comment },
|
|
27538
|
-
stoppedAt: this._recorder.stoppedAt
|
|
27624
|
+
stoppedAt: this._recorder.stoppedAt
|
|
27539
27625
|
};
|
|
27540
27626
|
const response = await this._apiService.stopSession(this.sessionId, request);
|
|
27541
27627
|
_eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_RESPONSE, response);
|
|
@@ -27593,7 +27679,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27593
27679
|
/**
|
|
27594
27680
|
* Set the session attributes
|
|
27595
27681
|
* @param attributes - the attributes to set
|
|
27596
|
-
|
|
27682
|
+
*/
|
|
27597
27683
|
setSessionAttributes(attributes) {
|
|
27598
27684
|
this._sessionAttributes = attributes;
|
|
27599
27685
|
}
|
|
@@ -27626,16 +27712,12 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27626
27712
|
const normalizedError = this._normalizeError(error);
|
|
27627
27713
|
const normalizedErrorInfo = this._normalizeErrorInfo(errorInfo);
|
|
27628
27714
|
this._tracer.captureException(normalizedError, normalizedErrorInfo);
|
|
27629
|
-
// If user isn't actively recording, auto-flush the crash buffer.
|
|
27630
|
-
if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped && !this.sessionId) {
|
|
27631
|
-
void this.flushBuffer({ reason: 'exception' });
|
|
27632
|
-
}
|
|
27633
27715
|
}
|
|
27634
27716
|
catch (e) {
|
|
27635
27717
|
this.error = (e === null || e === void 0 ? void 0 : e.message) || 'Failed to capture exception';
|
|
27636
27718
|
}
|
|
27637
27719
|
}
|
|
27638
|
-
async
|
|
27720
|
+
async _flushBuffer(sessionId) {
|
|
27639
27721
|
var _a, _b;
|
|
27640
27722
|
if (!((_b = (_a = this._configs) === null || _a === void 0 ? void 0 : _a.buffering) === null || _b === void 0 ? void 0 : _b.enabled))
|
|
27641
27723
|
return null;
|
|
@@ -27644,49 +27726,39 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27644
27726
|
if (this._isFlushingBuffer)
|
|
27645
27727
|
return null;
|
|
27646
27728
|
// Don’t flush while a live recording is active.
|
|
27647
|
-
if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped
|
|
27729
|
+
if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped)
|
|
27648
27730
|
return null;
|
|
27649
27731
|
this._isFlushingBuffer = true;
|
|
27650
27732
|
try {
|
|
27651
|
-
|
|
27652
|
-
|
|
27653
|
-
|
|
27654
|
-
|
|
27655
|
-
|
|
27656
|
-
});
|
|
27733
|
+
// await this._crashBuffer.setAttrs({
|
|
27734
|
+
// sessionAttributes: this.sessionAttributes,
|
|
27735
|
+
// resourceAttributes: getNavigatorInfo(),
|
|
27736
|
+
// userAttributes: this._userAttributes
|
|
27737
|
+
// })
|
|
27657
27738
|
const snapshot = await this._crashBuffer.snapshot();
|
|
27658
27739
|
if (snapshot.rrwebEvents.length === 0 && snapshot.otelSpans.length === 0) {
|
|
27659
27740
|
return null;
|
|
27660
27741
|
}
|
|
27661
|
-
|
|
27662
|
-
|
|
27663
|
-
|
|
27664
|
-
|
|
27665
|
-
|
|
27666
|
-
|
|
27667
|
-
|
|
27668
|
-
|
|
27669
|
-
|
|
27670
|
-
|
|
27671
|
-
|
|
27672
|
-
|
|
27673
|
-
|
|
27674
|
-
events: snapshot.rrwebEvents.map((e) => e.event),
|
|
27675
|
-
spans: snapshot.otelSpans.map((s) => s.span),
|
|
27676
|
-
attrs: snapshot.attrs,
|
|
27677
|
-
},
|
|
27678
|
-
};
|
|
27679
|
-
try {
|
|
27680
|
-
const res = await this._apiService.startSession(request);
|
|
27681
|
-
await this._crashBuffer.clear();
|
|
27682
|
-
return res;
|
|
27683
|
-
}
|
|
27684
|
-
catch (_e) {
|
|
27685
|
-
// swallow: flush is best-effort; never throw into app code
|
|
27686
|
-
return null;
|
|
27742
|
+
if (sessionId) {
|
|
27743
|
+
const spans = snapshot.otelSpans.map((s) => s.span);
|
|
27744
|
+
const events = snapshot.rrwebEvents.map((e) => e.event);
|
|
27745
|
+
await Promise.all([
|
|
27746
|
+
this._tracer.exportTraces(spans),
|
|
27747
|
+
this._apiService.exportEvents(sessionId, { events }),
|
|
27748
|
+
this._apiService.updateSessionAttributes(sessionId, {
|
|
27749
|
+
name: this._getSessionName(),
|
|
27750
|
+
sessionAttributes: this.sessionAttributes,
|
|
27751
|
+
resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
|
|
27752
|
+
userAttributes: this._userAttributes || undefined
|
|
27753
|
+
})
|
|
27754
|
+
]);
|
|
27687
27755
|
}
|
|
27688
27756
|
}
|
|
27757
|
+
catch (_e) {
|
|
27758
|
+
// swallow: flush is best-effort; never throw into app code
|
|
27759
|
+
}
|
|
27689
27760
|
finally {
|
|
27761
|
+
await this._crashBuffer.clear();
|
|
27690
27762
|
this._isFlushingBuffer = false;
|
|
27691
27763
|
}
|
|
27692
27764
|
}
|
|
@@ -27703,11 +27775,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27703
27775
|
const payload = {
|
|
27704
27776
|
sessionAttributes: {
|
|
27705
27777
|
...this.sessionAttributes,
|
|
27706
|
-
...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.sessionAttributes) || {})
|
|
27778
|
+
...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.sessionAttributes) || {})
|
|
27707
27779
|
},
|
|
27708
27780
|
resourceAttributes: {
|
|
27709
27781
|
...(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
|
|
27710
|
-
...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {})
|
|
27782
|
+
...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {})
|
|
27711
27783
|
},
|
|
27712
27784
|
userAttributes: this._userAttributes
|
|
27713
27785
|
};
|
|
@@ -27835,8 +27907,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27835
27907
|
message: 'Your session was auto-saved due to an error',
|
|
27836
27908
|
button: {
|
|
27837
27909
|
text: 'Open session',
|
|
27838
|
-
url: (_a = payload === null || payload === void 0 ? void 0 : payload.data) === null || _a === void 0 ? void 0 : _a.url
|
|
27839
|
-
}
|
|
27910
|
+
url: (_a = payload === null || payload === void 0 ? void 0 : payload.data) === null || _a === void 0 ? void 0 : _a.url
|
|
27911
|
+
}
|
|
27840
27912
|
}, 5000);
|
|
27841
27913
|
});
|
|
27842
27914
|
this._socketService.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_START, (payload) => {
|
|
@@ -27852,11 +27924,21 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27852
27924
|
}
|
|
27853
27925
|
});
|
|
27854
27926
|
this._socketService.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_SAVE_BUFFER_EVENT, (payload) => {
|
|
27855
|
-
|
|
27856
|
-
|
|
27857
|
-
|
|
27927
|
+
var _a;
|
|
27928
|
+
if (!((_a = payload === null || payload === void 0 ? void 0 : payload.debugSession) === null || _a === void 0 ? void 0 : _a._id))
|
|
27929
|
+
return;
|
|
27930
|
+
void this._flushBuffer(payload.debugSession._id);
|
|
27858
27931
|
});
|
|
27859
27932
|
}
|
|
27933
|
+
async _createExceptionSession(span) {
|
|
27934
|
+
try {
|
|
27935
|
+
const session = await this._apiService.createErrorSession({ span });
|
|
27936
|
+
if (session) {
|
|
27937
|
+
void this._flushBuffer(session._id);
|
|
27938
|
+
}
|
|
27939
|
+
}
|
|
27940
|
+
catch (_ignored) { }
|
|
27941
|
+
}
|
|
27860
27942
|
/**
|
|
27861
27943
|
* Create a new session and start it
|
|
27862
27944
|
*/
|
|
@@ -27868,17 +27950,14 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27868
27950
|
sessionAttributes: this.sessionAttributes,
|
|
27869
27951
|
resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
|
|
27870
27952
|
name: this._getSessionName(),
|
|
27871
|
-
...(this._userAttributes ? { userAttributes: this._userAttributes } : {})
|
|
27953
|
+
...(this._userAttributes ? { userAttributes: this._userAttributes } : {})
|
|
27872
27954
|
};
|
|
27873
|
-
const request = !this.continuousRecording ?
|
|
27874
|
-
payload : { debugSessionData: payload };
|
|
27955
|
+
const request = !this.continuousRecording ? payload : { debugSessionData: payload };
|
|
27875
27956
|
const session = this.continuousRecording
|
|
27876
27957
|
? await this._apiService.startContinuousDebugSession(request, signal)
|
|
27877
27958
|
: await this._apiService.startSession(request, signal);
|
|
27878
27959
|
if (session) {
|
|
27879
|
-
session.sessionType = this.continuousRecording
|
|
27880
|
-
? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS
|
|
27881
|
-
: _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.SessionType.MANUAL;
|
|
27960
|
+
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;
|
|
27882
27961
|
this._setupSessionAndStart(session, false);
|
|
27883
27962
|
}
|
|
27884
27963
|
}
|
|
@@ -27900,7 +27979,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
27900
27979
|
this._tracer.start(this.sessionId, this.sessionType);
|
|
27901
27980
|
// Ensure we switch from buffer-only recording to session recording cleanly.
|
|
27902
27981
|
void this._recorder.restart(this.sessionId, this.sessionType);
|
|
27903
|
-
this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType
|
|
27982
|
+
this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType });
|
|
27904
27983
|
if (this.session) {
|
|
27905
27984
|
_eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STARTED_EVENT, this.session);
|
|
27906
27985
|
this._socketService.subscribeToSession(this.session);
|
|
@@ -30182,7 +30261,10 @@ var SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {
|
|
|
30182
30261
|
}
|
|
30183
30262
|
SessionRecorderTraceIdRatioBasedSampler.prototype.shouldSample = function (context, traceId) {
|
|
30184
30263
|
if (traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX)
|
|
30185
|
-
|| traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)
|
|
30264
|
+
|| traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)
|
|
30265
|
+
// || traceId.startsWith(MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX)
|
|
30266
|
+
// || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX)
|
|
30267
|
+
) {
|
|
30186
30268
|
return {
|
|
30187
30269
|
decision: _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_1__.SamplingDecision.RECORD_AND_SAMPLED,
|
|
30188
30270
|
};
|
|
@@ -30267,7 +30349,7 @@ var SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {
|
|
|
30267
30349
|
/* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* binding */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
|
|
30268
30350
|
/* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* binding */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
|
|
30269
30351
|
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
|
|
30270
|
-
/* harmony export */
|
|
30352
|
+
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
|
|
30271
30353
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_DEBUG_PREFIX),
|
|
30272
30354
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH: () => (/* binding */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH),
|
|
30273
30355
|
/* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_DOC_PREFIX),
|
|
@@ -30284,11 +30366,11 @@ var MULTIPLAYER_TRACE_DOC_PREFIX = 'd0cd0c';
|
|
|
30284
30366
|
var MULTIPLAYER_TRACE_DEBUG_PREFIX = 'debdeb';
|
|
30285
30367
|
var MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX = 'cdbcdb';
|
|
30286
30368
|
var MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX = 'cdbcac';
|
|
30287
|
-
var
|
|
30369
|
+
var MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX = 'debcdb';
|
|
30288
30370
|
var MULTIPLAYER_TRACE_PREFIX_MAP = (_a = {},
|
|
30289
30371
|
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS] = MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX,
|
|
30290
30372
|
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.SESSION_CACHE] = MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX,
|
|
30291
|
-
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS_SESSION_CACHE] =
|
|
30373
|
+
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS_SESSION_CACHE] = MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX,
|
|
30292
30374
|
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.MANUAL] = MULTIPLAYER_TRACE_DEBUG_PREFIX,
|
|
30293
30375
|
_a);
|
|
30294
30376
|
var MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH = 8;
|
|
@@ -30391,7 +30473,7 @@ var MASK_PLACEHOLDER = '***MASKED***';
|
|
|
30391
30473
|
/* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
|
|
30392
30474
|
/* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
|
|
30393
30475
|
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
|
|
30394
|
-
/* harmony export */
|
|
30476
|
+
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
|
|
30395
30477
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
|
|
30396
30478
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH),
|
|
30397
30479
|
/* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DOC_PREFIX),
|
|
@@ -30439,7 +30521,7 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
30439
30521
|
if (config === void 0) { config = {}; }
|
|
30440
30522
|
this.usePostMessage = false;
|
|
30441
30523
|
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;
|
|
30442
|
-
this.config = __assign(__assign({}, config), { url: url, apiKey: apiKey, headers: headers,
|
|
30524
|
+
this.config = __assign(__assign({}, config), { url: url, apiKey: apiKey, headers: headers, keepAlive: keepAlive, timeoutMillis: timeoutMillis, concurrencyLimit: concurrencyLimit });
|
|
30443
30525
|
this.postMessageType = postMessageType;
|
|
30444
30526
|
this.postMessageTargetOrigin = postMessageTargetOrigin;
|
|
30445
30527
|
this.exporter = this._createExporter();
|
|
@@ -30449,8 +30531,8 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
30449
30531
|
// Filter spans to only include those with Multiplayer trace prefixes
|
|
30450
30532
|
var filteredSpans = spans.filter(function (span) {
|
|
30451
30533
|
var traceId = span.spanContext().traceId;
|
|
30452
|
-
return traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX) ||
|
|
30453
|
-
traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX);
|
|
30534
|
+
return (traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX) ||
|
|
30535
|
+
traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX));
|
|
30454
30536
|
});
|
|
30455
30537
|
// Only proceed if there are filtered spans
|
|
30456
30538
|
if (filteredSpans.length === 0) {
|
|
@@ -30477,6 +30559,14 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
30477
30559
|
SessionRecorderBrowserTraceExporter.prototype.shutdown = function () {
|
|
30478
30560
|
return this.exporter.shutdown();
|
|
30479
30561
|
};
|
|
30562
|
+
SessionRecorderBrowserTraceExporter.prototype.exportBuffer = function (spans) {
|
|
30563
|
+
var _this = this;
|
|
30564
|
+
return new Promise(function (resolve) {
|
|
30565
|
+
_this.exporter.export(spans, function (result) {
|
|
30566
|
+
resolve(result);
|
|
30567
|
+
});
|
|
30568
|
+
});
|
|
30569
|
+
};
|
|
30480
30570
|
SessionRecorderBrowserTraceExporter.prototype.exportViaPostMessage = function (spans, resultCallback) {
|
|
30481
30571
|
var _this = this;
|
|
30482
30572
|
if (typeof window === 'undefined') {
|
|
@@ -30487,7 +30577,7 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
30487
30577
|
window.postMessage({
|
|
30488
30578
|
action: 'traces',
|
|
30489
30579
|
type: this.postMessageType,
|
|
30490
|
-
payload: spans.map(function (span) { return _this.
|
|
30580
|
+
payload: spans.map(function (span) { return _this.serializeSpan(span); })
|
|
30491
30581
|
}, this.postMessageTargetOrigin);
|
|
30492
30582
|
resultCallback({ code: 0 });
|
|
30493
30583
|
}
|
|
@@ -30495,38 +30585,17 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
30495
30585
|
resultCallback({ code: 1 });
|
|
30496
30586
|
}
|
|
30497
30587
|
};
|
|
30498
|
-
SessionRecorderBrowserTraceExporter.prototype.
|
|
30499
|
-
var _a;
|
|
30588
|
+
SessionRecorderBrowserTraceExporter.prototype.serializeSpan = function (span) {
|
|
30500
30589
|
var spanContext = span.spanContext();
|
|
30501
|
-
return {
|
|
30502
|
-
_spanContext: spanContext,
|
|
30503
|
-
name: span.name,
|
|
30504
|
-
kind: span.kind,
|
|
30505
|
-
links: span.links,
|
|
30506
|
-
ended: span.ended,
|
|
30507
|
-
events: span.events,
|
|
30508
|
-
status: span.status,
|
|
30509
|
-
endTime: span.endTime,
|
|
30510
|
-
startTime: span.startTime,
|
|
30511
|
-
duration: span.duration,
|
|
30512
|
-
attributes: span.attributes,
|
|
30513
|
-
parentSpanId: (_a = span.parentSpanContext) === null || _a === void 0 ? void 0 : _a.spanId,
|
|
30514
|
-
droppedAttributesCount: span.droppedAttributesCount,
|
|
30515
|
-
droppedEventsCount: span.droppedEventsCount,
|
|
30516
|
-
droppedLinksCount: span.droppedLinksCount,
|
|
30517
|
-
resource: {
|
|
30518
|
-
attributes: span.resource.attributes,
|
|
30519
|
-
asyncAttributesPending: span.resource.asyncAttributesPending,
|
|
30520
|
-
},
|
|
30521
|
-
};
|
|
30590
|
+
return __assign(__assign({}, span), { _spanContext: spanContext });
|
|
30522
30591
|
};
|
|
30523
30592
|
SessionRecorderBrowserTraceExporter.prototype._createExporter = function () {
|
|
30524
30593
|
return new _opentelemetry_exporter_trace_otlp_http__WEBPACK_IMPORTED_MODULE_1__.OTLPTraceExporter({
|
|
30525
30594
|
url: this.config.url,
|
|
30526
|
-
headers: __assign(__assign({ 'Content-Type': 'application/json' }, (this.config.apiKey ? {
|
|
30595
|
+
headers: __assign(__assign({ 'Content-Type': 'application/json' }, (this.config.apiKey ? { Authorization: this.config.apiKey } : {})), (this.config.headers || {})),
|
|
30527
30596
|
timeoutMillis: this.config.timeoutMillis,
|
|
30528
30597
|
keepAlive: this.config.keepAlive,
|
|
30529
|
-
concurrencyLimit: this.config.concurrencyLimit
|
|
30598
|
+
concurrencyLimit: this.config.concurrencyLimit
|
|
30530
30599
|
});
|
|
30531
30600
|
};
|
|
30532
30601
|
SessionRecorderBrowserTraceExporter.prototype.setApiKey = function (apiKey) {
|
|
@@ -30606,7 +30675,7 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
30606
30675
|
/* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
|
|
30607
30676
|
/* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
|
|
30608
30677
|
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
|
|
30609
|
-
/* harmony export */
|
|
30678
|
+
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
|
|
30610
30679
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
|
|
30611
30680
|
/* 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),
|
|
30612
30681
|
/* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DOC_PREFIX),
|
|
@@ -31216,6 +31285,18 @@ var setGrpcResponseMessage = function (body, options) {
|
|
|
31216
31285
|
|
|
31217
31286
|
/***/ }),
|
|
31218
31287
|
|
|
31288
|
+
/***/ "../session-recorder-common/dist/esm/type/crash-buffer.js":
|
|
31289
|
+
/*!****************************************************************!*\
|
|
31290
|
+
!*** ../session-recorder-common/dist/esm/type/crash-buffer.js ***!
|
|
31291
|
+
\****************************************************************/
|
|
31292
|
+
/***/ (() => {
|
|
31293
|
+
|
|
31294
|
+
"use strict";
|
|
31295
|
+
|
|
31296
|
+
//# sourceMappingURL=crash-buffer.js.map
|
|
31297
|
+
|
|
31298
|
+
/***/ }),
|
|
31299
|
+
|
|
31219
31300
|
/***/ "../session-recorder-common/dist/esm/type/index.js":
|
|
31220
31301
|
/*!*********************************************************!*\
|
|
31221
31302
|
!*** ../session-recorder-common/dist/esm/type/index.js ***!
|
|
@@ -31231,6 +31312,8 @@ var setGrpcResponseMessage = function (body, options) {
|
|
|
31231
31312
|
/* 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");
|
|
31232
31313
|
/* 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");
|
|
31233
31314
|
/* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./session */ "../session-recorder-common/dist/esm/type/session.js");
|
|
31315
|
+
/* harmony import */ var _crash_buffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./crash-buffer */ "../session-recorder-common/dist/esm/type/crash-buffer.js");
|
|
31316
|
+
|
|
31234
31317
|
|
|
31235
31318
|
|
|
31236
31319
|
|
|
@@ -49697,7 +49780,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
49697
49780
|
/* 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),
|
|
49698
49781
|
/* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
|
|
49699
49782
|
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
|
|
49700
|
-
/* harmony export */
|
|
49783
|
+
/* 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),
|
|
49701
49784
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
|
|
49702
49785
|
/* 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),
|
|
49703
49786
|
/* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_DOC_PREFIX),
|