@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/browser/index.js
CHANGED
|
@@ -25054,7 +25054,7 @@ const CONTINUOUS_DEBUGGING_TIMEOUT = 60000; // 1 minutes
|
|
|
25054
25054
|
const DEBUG_SESSION_MAX_DURATION_SECONDS = 10 * 60 + 30; // TODO: move to shared config otel core
|
|
25055
25055
|
const REMOTE_SESSION_RECORDING_START = 'remote-session-recording:start';
|
|
25056
25056
|
const REMOTE_SESSION_RECORDING_STOP = 'remote-session-recording:stop';
|
|
25057
|
-
const PACKAGE_VERSION_EXPORT = "1.3.
|
|
25057
|
+
const PACKAGE_VERSION_EXPORT = "1.3.19" || 0;
|
|
25058
25058
|
// Regex patterns for OpenTelemetry ignore URLs
|
|
25059
25059
|
const OTEL_IGNORE_URLS = [
|
|
25060
25060
|
// Traces endpoint
|
|
@@ -25735,6 +25735,64 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
25735
25735
|
|
|
25736
25736
|
|
|
25737
25737
|
|
|
25738
|
+
/***/ }),
|
|
25739
|
+
|
|
25740
|
+
/***/ "./src/otel/CrashBufferSpanProcessor.ts":
|
|
25741
|
+
/*!**********************************************!*\
|
|
25742
|
+
!*** ./src/otel/CrashBufferSpanProcessor.ts ***!
|
|
25743
|
+
\**********************************************/
|
|
25744
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
25745
|
+
|
|
25746
|
+
"use strict";
|
|
25747
|
+
__webpack_require__.r(__webpack_exports__);
|
|
25748
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
25749
|
+
/* harmony export */ CrashBufferSpanProcessor: () => (/* binding */ CrashBufferSpanProcessor)
|
|
25750
|
+
/* harmony export */ });
|
|
25751
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js");
|
|
25752
|
+
/* 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");
|
|
25753
|
+
|
|
25754
|
+
|
|
25755
|
+
/**
|
|
25756
|
+
* Implementation of the {@link SpanProcessor} that batches spans exported by
|
|
25757
|
+
* the SDK then pushes them to the exporter pipeline.
|
|
25758
|
+
*/
|
|
25759
|
+
class CrashBufferSpanProcessor {
|
|
25760
|
+
constructor(_exporter, _crashBuffer, _serializeSpan) {
|
|
25761
|
+
this._exporter = _exporter;
|
|
25762
|
+
this._crashBuffer = _crashBuffer;
|
|
25763
|
+
this._serializeSpan = _serializeSpan;
|
|
25764
|
+
}
|
|
25765
|
+
forceFlush() {
|
|
25766
|
+
return this._exporter.forceFlush();
|
|
25767
|
+
}
|
|
25768
|
+
onStart(_span, _parentContext) {
|
|
25769
|
+
return this._exporter.onStart(_span, _parentContext);
|
|
25770
|
+
}
|
|
25771
|
+
onEnd(span) {
|
|
25772
|
+
const traceId = span.spanContext().traceId;
|
|
25773
|
+
if ((span.spanContext().traceFlags & _opentelemetry_api__WEBPACK_IMPORTED_MODULE_1__.TraceFlags.SAMPLED) === 0) {
|
|
25774
|
+
return;
|
|
25775
|
+
}
|
|
25776
|
+
if (traceId.startsWith(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX) ||
|
|
25777
|
+
traceId.startsWith(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX)) {
|
|
25778
|
+
if (this._crashBuffer) {
|
|
25779
|
+
this._crashBuffer.appendSpans([
|
|
25780
|
+
{
|
|
25781
|
+
ts: span.startTime[0] * 1000 + span.startTime[1] / 1000000,
|
|
25782
|
+
span: this._serializeSpan(span)
|
|
25783
|
+
}
|
|
25784
|
+
]);
|
|
25785
|
+
}
|
|
25786
|
+
return;
|
|
25787
|
+
}
|
|
25788
|
+
this._exporter.onEnd(span);
|
|
25789
|
+
}
|
|
25790
|
+
shutdown() {
|
|
25791
|
+
return this._exporter.shutdown();
|
|
25792
|
+
}
|
|
25793
|
+
}
|
|
25794
|
+
|
|
25795
|
+
|
|
25738
25796
|
/***/ }),
|
|
25739
25797
|
|
|
25740
25798
|
/***/ "./src/otel/helpers.ts":
|
|
@@ -25979,19 +26037,21 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
25979
26037
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
25980
26038
|
/* harmony export */ TracerBrowserSDK: () => (/* binding */ TracerBrowserSDK)
|
|
25981
26039
|
/* harmony export */ });
|
|
25982
|
-
/* harmony import */ var
|
|
25983
|
-
/* harmony import */ var
|
|
25984
|
-
/* harmony import */ var
|
|
25985
|
-
/* harmony import */ var
|
|
25986
|
-
/* harmony import */ var
|
|
25987
|
-
/* harmony import */ var
|
|
26040
|
+
/* harmony import */ var _opentelemetry_resources__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @opentelemetry/resources */ "../../node_modules/@opentelemetry/resources/build/esm/ResourceImpl.js");
|
|
26041
|
+
/* harmony import */ var _opentelemetry_core__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @opentelemetry/core */ "../../node_modules/@opentelemetry/core/build/esm/trace/W3CTraceContextPropagator.js");
|
|
26042
|
+
/* 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");
|
|
26043
|
+
/* 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");
|
|
26044
|
+
/* 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");
|
|
26045
|
+
/* harmony import */ var _opentelemetry_instrumentation__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @opentelemetry/instrumentation */ "../../node_modules/@opentelemetry/instrumentation/build/esm/autoLoader.js");
|
|
25988
26046
|
/* 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");
|
|
25989
26047
|
/* 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");
|
|
25990
|
-
/* harmony import */ var
|
|
25991
|
-
/* harmony import */ var
|
|
25992
|
-
/* harmony import */ var
|
|
26048
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace-api.js");
|
|
26049
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/context-api.js");
|
|
26050
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/status.js");
|
|
25993
26051
|
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config */ "./src/config/index.ts");
|
|
25994
26052
|
/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers */ "./src/otel/helpers.ts");
|
|
26053
|
+
/* harmony import */ var _CrashBufferSpanProcessor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./CrashBufferSpanProcessor */ "./src/otel/CrashBufferSpanProcessor.ts");
|
|
26054
|
+
|
|
25995
26055
|
|
|
25996
26056
|
|
|
25997
26057
|
|
|
@@ -26005,8 +26065,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26005
26065
|
|
|
26006
26066
|
class TracerBrowserSDK {
|
|
26007
26067
|
constructor() {
|
|
26008
|
-
this.sessionId = '';
|
|
26009
26068
|
this.clientId = '';
|
|
26069
|
+
this.sessionId = '';
|
|
26010
26070
|
this.globalErrorListenersRegistered = false;
|
|
26011
26071
|
}
|
|
26012
26072
|
setSessionId(sessionId, sessionType = _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionType.MANUAL) {
|
|
@@ -26024,36 +26084,33 @@ class TracerBrowserSDK {
|
|
|
26024
26084
|
this.exporter = new _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionRecorderBrowserTraceExporter({
|
|
26025
26085
|
apiKey: options.apiKey,
|
|
26026
26086
|
url: (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getExporterEndpoint)(options.exporterEndpoint),
|
|
26027
|
-
usePostMessageFallback: options.usePostMessageFallback
|
|
26087
|
+
usePostMessageFallback: options.usePostMessageFallback
|
|
26028
26088
|
});
|
|
26029
|
-
this.
|
|
26030
|
-
|
|
26031
|
-
|
|
26032
|
-
[
|
|
26033
|
-
[
|
|
26089
|
+
this.batchSpanProcessor = new _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_5__.BatchSpanProcessor(this.exporter);
|
|
26090
|
+
this.tracerProvider = new _opentelemetry_sdk_trace_web__WEBPACK_IMPORTED_MODULE_6__.WebTracerProvider({
|
|
26091
|
+
resource: (0,_opentelemetry_resources__WEBPACK_IMPORTED_MODULE_7__.resourceFromAttributes)({
|
|
26092
|
+
[_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_SERVICE_NAME]: application,
|
|
26093
|
+
[_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_SERVICE_VERSION]: version,
|
|
26094
|
+
[_opentelemetry_semantic_conventions__WEBPACK_IMPORTED_MODULE_8__.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: environment
|
|
26034
26095
|
}),
|
|
26035
26096
|
idGenerator: this.idGenerator,
|
|
26036
26097
|
sampler: new _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.SessionRecorderTraceIdRatioBasedSampler(this.config.sampleTraceRatio),
|
|
26037
26098
|
spanProcessors: [
|
|
26038
26099
|
this._getSpanSessionIdProcessor(),
|
|
26039
|
-
this.
|
|
26040
|
-
|
|
26041
|
-
],
|
|
26100
|
+
new _CrashBufferSpanProcessor__WEBPACK_IMPORTED_MODULE_4__.CrashBufferSpanProcessor(this.batchSpanProcessor, this.crashBuffer, this.exporter.serializeSpan.bind(this.exporter))
|
|
26101
|
+
]
|
|
26042
26102
|
});
|
|
26043
26103
|
this.tracerProvider.register({
|
|
26044
26104
|
// contextManager: new ZoneContextManager(),
|
|
26045
|
-
propagator: new
|
|
26105
|
+
propagator: new _opentelemetry_core__WEBPACK_IMPORTED_MODULE_9__.W3CTraceContextPropagator()
|
|
26046
26106
|
});
|
|
26047
|
-
(0,
|
|
26107
|
+
(0,_opentelemetry_instrumentation__WEBPACK_IMPORTED_MODULE_10__.registerInstrumentations)({
|
|
26048
26108
|
tracerProvider: this.tracerProvider,
|
|
26049
26109
|
instrumentations: [
|
|
26050
26110
|
(0,_opentelemetry_auto_instrumentations_web__WEBPACK_IMPORTED_MODULE_0__.getWebAutoInstrumentations)({
|
|
26051
26111
|
'@opentelemetry/instrumentation-xml-http-request': {
|
|
26052
26112
|
clearTimingResources: true,
|
|
26053
|
-
ignoreUrls: [
|
|
26054
|
-
..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS,
|
|
26055
|
-
...(this.config.ignoreUrls || []),
|
|
26056
|
-
],
|
|
26113
|
+
ignoreUrls: [..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS, ...(this.config.ignoreUrls || [])],
|
|
26057
26114
|
propagateTraceHeaderCorsUrls: options.propagateTraceHeaderCorsUrls,
|
|
26058
26115
|
applyCustomAttributesOnSpan: (span, xhr) => {
|
|
26059
26116
|
if (!this.config)
|
|
@@ -26073,7 +26130,7 @@ class TracerBrowserSDK {
|
|
|
26073
26130
|
requestBody,
|
|
26074
26131
|
responseBody,
|
|
26075
26132
|
requestHeaders,
|
|
26076
|
-
responseHeaders
|
|
26133
|
+
responseHeaders
|
|
26077
26134
|
};
|
|
26078
26135
|
(0,_helpers__WEBPACK_IMPORTED_MODULE_3__.processHttpPayload)(payload, this.config, span);
|
|
26079
26136
|
}
|
|
@@ -26081,14 +26138,11 @@ class TracerBrowserSDK {
|
|
|
26081
26138
|
// eslint-disable-next-line
|
|
26082
26139
|
console.error('[MULTIPLAYER_SESSION_RECORDER] Failed to capture xml-http payload', error);
|
|
26083
26140
|
}
|
|
26084
|
-
}
|
|
26141
|
+
}
|
|
26085
26142
|
},
|
|
26086
26143
|
'@opentelemetry/instrumentation-fetch': {
|
|
26087
26144
|
clearTimingResources: true,
|
|
26088
|
-
ignoreUrls: [
|
|
26089
|
-
..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS,
|
|
26090
|
-
...(this.config.ignoreUrls || []),
|
|
26091
|
-
],
|
|
26145
|
+
ignoreUrls: [..._config__WEBPACK_IMPORTED_MODULE_2__.OTEL_IGNORE_URLS, ...(this.config.ignoreUrls || [])],
|
|
26092
26146
|
propagateTraceHeaderCorsUrls: options.propagateTraceHeaderCorsUrls,
|
|
26093
26147
|
applyCustomAttributesOnSpan: async (span, request, response) => {
|
|
26094
26148
|
if (!this.config)
|
|
@@ -26125,7 +26179,7 @@ class TracerBrowserSDK {
|
|
|
26125
26179
|
requestBody,
|
|
26126
26180
|
responseBody,
|
|
26127
26181
|
requestHeaders,
|
|
26128
|
-
responseHeaders
|
|
26182
|
+
responseHeaders
|
|
26129
26183
|
};
|
|
26130
26184
|
(0,_helpers__WEBPACK_IMPORTED_MODULE_3__.processHttpPayload)(payload, this.config, span);
|
|
26131
26185
|
}
|
|
@@ -26133,7 +26187,7 @@ class TracerBrowserSDK {
|
|
|
26133
26187
|
// eslint-disable-next-line
|
|
26134
26188
|
console.error('[MULTIPLAYER_SESSION_RECORDER] Failed to capture fetch payload', error);
|
|
26135
26189
|
}
|
|
26136
|
-
}
|
|
26190
|
+
}
|
|
26137
26191
|
},
|
|
26138
26192
|
'@opentelemetry/instrumentation-user-interaction': {
|
|
26139
26193
|
shouldPreventSpanCreation: (_event, element, span) => {
|
|
@@ -26142,71 +26196,20 @@ class TracerBrowserSDK {
|
|
|
26142
26196
|
}
|
|
26143
26197
|
span.setAttribute('target.innerText', (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getElementInnerText)(element));
|
|
26144
26198
|
span.setAttribute('target.textContent', (0,_helpers__WEBPACK_IMPORTED_MODULE_3__.getElementTextContent)(element));
|
|
26145
|
-
Array.from(element.attributes).forEach(attribute => {
|
|
26199
|
+
Array.from(element.attributes).forEach((attribute) => {
|
|
26146
26200
|
span.setAttribute(`target.attribute.${attribute.name}`, attribute.value);
|
|
26147
26201
|
});
|
|
26148
26202
|
return false;
|
|
26149
|
-
}
|
|
26150
|
-
}
|
|
26151
|
-
})
|
|
26152
|
-
]
|
|
26203
|
+
}
|
|
26204
|
+
}
|
|
26205
|
+
})
|
|
26206
|
+
]
|
|
26153
26207
|
});
|
|
26154
26208
|
this._registerGlobalErrorListeners();
|
|
26155
26209
|
}
|
|
26156
26210
|
setCrashBuffer(crashBuffer) {
|
|
26157
26211
|
this.crashBuffer = crashBuffer;
|
|
26158
26212
|
}
|
|
26159
|
-
_getCrashBufferSpanProcessor() {
|
|
26160
|
-
return {
|
|
26161
|
-
onStart: () => { },
|
|
26162
|
-
onEnd: (span) => {
|
|
26163
|
-
// Only buffer spans when we don't have an active debug session.
|
|
26164
|
-
if (this.sessionId)
|
|
26165
|
-
return;
|
|
26166
|
-
if (!this.crashBuffer)
|
|
26167
|
-
return;
|
|
26168
|
-
try {
|
|
26169
|
-
const now = Date.now();
|
|
26170
|
-
this.crashBuffer.appendOtelSpan({
|
|
26171
|
-
ts: now,
|
|
26172
|
-
span: this._serializeSpan(span),
|
|
26173
|
-
});
|
|
26174
|
-
}
|
|
26175
|
-
catch (_e) {
|
|
26176
|
-
// ignore
|
|
26177
|
-
}
|
|
26178
|
-
},
|
|
26179
|
-
shutdown: () => Promise.resolve(),
|
|
26180
|
-
forceFlush: () => Promise.resolve(),
|
|
26181
|
-
};
|
|
26182
|
-
}
|
|
26183
|
-
_serializeSpan(span) {
|
|
26184
|
-
var _a, _b;
|
|
26185
|
-
const spanContext = ((_a = span === null || span === void 0 ? void 0 : span.spanContext) === null || _a === void 0 ? void 0 : _a.call(span))
|
|
26186
|
-
? span.spanContext()
|
|
26187
|
-
: span === null || span === void 0 ? void 0 : span._spanContext;
|
|
26188
|
-
return {
|
|
26189
|
-
_spanContext: spanContext,
|
|
26190
|
-
name: span === null || span === void 0 ? void 0 : span.name,
|
|
26191
|
-
kind: span === null || span === void 0 ? void 0 : span.kind,
|
|
26192
|
-
links: span === null || span === void 0 ? void 0 : span.links,
|
|
26193
|
-
ended: span === null || span === void 0 ? void 0 : span.ended,
|
|
26194
|
-
events: span === null || span === void 0 ? void 0 : span.events,
|
|
26195
|
-
status: span === null || span === void 0 ? void 0 : span.status,
|
|
26196
|
-
endTime: span === null || span === void 0 ? void 0 : span.endTime,
|
|
26197
|
-
startTime: span === null || span === void 0 ? void 0 : span.startTime,
|
|
26198
|
-
duration: span === null || span === void 0 ? void 0 : span.duration,
|
|
26199
|
-
attributes: span === null || span === void 0 ? void 0 : span.attributes,
|
|
26200
|
-
parentSpanId: (_b = span === null || span === void 0 ? void 0 : span.parentSpanContext) === null || _b === void 0 ? void 0 : _b.spanId,
|
|
26201
|
-
droppedAttributesCount: span === null || span === void 0 ? void 0 : span.droppedAttributesCount,
|
|
26202
|
-
droppedEventsCount: span === null || span === void 0 ? void 0 : span.droppedEventsCount,
|
|
26203
|
-
droppedLinksCount: span === null || span === void 0 ? void 0 : span.droppedLinksCount,
|
|
26204
|
-
resource: (span === null || span === void 0 ? void 0 : span.resource) ? {
|
|
26205
|
-
attributes: span.resource.attributes,
|
|
26206
|
-
asyncAttributesPending: span.resource.asyncAttributesPending,
|
|
26207
|
-
} : undefined,
|
|
26208
|
-
};
|
|
26209
|
-
}
|
|
26210
26213
|
start(sessionId, sessionType) {
|
|
26211
26214
|
if (!this.tracerProvider) {
|
|
26212
26215
|
throw new Error('Configuration not initialized. Call init() before start().');
|
|
@@ -26231,13 +26234,15 @@ class TracerBrowserSDK {
|
|
|
26231
26234
|
* Otherwise, a short-lived span will be created to hold the exception event.
|
|
26232
26235
|
*/
|
|
26233
26236
|
captureException(error, errorInfo) {
|
|
26237
|
+
var _a, _b;
|
|
26234
26238
|
if (!error)
|
|
26235
26239
|
return;
|
|
26236
26240
|
// Prefer attaching to the active span to keep correlation intact
|
|
26237
26241
|
try {
|
|
26238
|
-
const activeSpan =
|
|
26242
|
+
const activeSpan = _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__.trace.getSpan(_opentelemetry_api__WEBPACK_IMPORTED_MODULE_12__.context.active());
|
|
26239
26243
|
if (activeSpan) {
|
|
26240
26244
|
this._recordException(activeSpan, error, errorInfo);
|
|
26245
|
+
(_a = this.tracerProvider) === null || _a === void 0 ? void 0 : _a.forceFlush();
|
|
26241
26246
|
return;
|
|
26242
26247
|
}
|
|
26243
26248
|
// eslint-disable-next-line
|
|
@@ -26245,17 +26250,26 @@ class TracerBrowserSDK {
|
|
|
26245
26250
|
catch (_ignored) { }
|
|
26246
26251
|
// Fallback: create a short-lived span to hold the exception details
|
|
26247
26252
|
try {
|
|
26248
|
-
const tracer =
|
|
26253
|
+
const tracer = _opentelemetry_api__WEBPACK_IMPORTED_MODULE_11__.trace.getTracer('exception');
|
|
26249
26254
|
const span = tracer.startSpan(error.name || 'Error');
|
|
26250
26255
|
this._recordException(span, error, errorInfo);
|
|
26251
26256
|
span.end();
|
|
26257
|
+
(_b = this.tracerProvider) === null || _b === void 0 ? void 0 : _b.forceFlush();
|
|
26252
26258
|
// eslint-disable-next-line
|
|
26253
26259
|
}
|
|
26254
26260
|
catch (_ignored) { }
|
|
26255
26261
|
}
|
|
26262
|
+
async exportTraces(spans) {
|
|
26263
|
+
var _a;
|
|
26264
|
+
if ((_a = this === null || this === void 0 ? void 0 : this.batchSpanProcessor) === null || _a === void 0 ? void 0 : _a.onEnd) {
|
|
26265
|
+
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); });
|
|
26266
|
+
// return this.batchSpanProcessor.onEnd()
|
|
26267
|
+
}
|
|
26268
|
+
throw new Error('Buffer span processor not initialized');
|
|
26269
|
+
}
|
|
26256
26270
|
_recordException(span, error, errorInfo) {
|
|
26257
26271
|
span.recordException(error);
|
|
26258
|
-
span.setStatus({ code:
|
|
26272
|
+
span.setStatus({ code: _opentelemetry_api__WEBPACK_IMPORTED_MODULE_13__.SpanStatusCode.ERROR, message: error.message });
|
|
26259
26273
|
span.setAttribute('exception.type', error.name || 'Error');
|
|
26260
26274
|
span.setAttribute('exception.message', error.message);
|
|
26261
26275
|
span.setAttribute('exception.stacktrace', error.stack || '');
|
|
@@ -26268,14 +26282,14 @@ class TracerBrowserSDK {
|
|
|
26268
26282
|
_getSpanSessionIdProcessor() {
|
|
26269
26283
|
return {
|
|
26270
26284
|
forceFlush: () => Promise.resolve(),
|
|
26271
|
-
onEnd: () =>
|
|
26285
|
+
onEnd: () => Promise.resolve(),
|
|
26272
26286
|
shutdown: () => Promise.resolve(),
|
|
26273
26287
|
onStart: (span) => {
|
|
26274
26288
|
var _a;
|
|
26275
26289
|
if ((_a = this.sessionId) === null || _a === void 0 ? void 0 : _a.length) {
|
|
26276
26290
|
span.setAttribute(_multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_1__.ATTR_MULTIPLAYER_SESSION_ID, this.sessionId);
|
|
26277
26291
|
}
|
|
26278
|
-
}
|
|
26292
|
+
}
|
|
26279
26293
|
};
|
|
26280
26294
|
}
|
|
26281
26295
|
_registerGlobalErrorListeners() {
|
|
@@ -26285,14 +26299,12 @@ class TracerBrowserSDK {
|
|
|
26285
26299
|
return;
|
|
26286
26300
|
// eslint-disable-next-line
|
|
26287
26301
|
const errorHandler = (event) => {
|
|
26288
|
-
const err = (event === null || event === void 0 ? void 0 : event.error) instanceof Error
|
|
26289
|
-
? event.error
|
|
26290
|
-
: new Error((event === null || event === void 0 ? void 0 : event.message) || 'Script error');
|
|
26302
|
+
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');
|
|
26291
26303
|
this.captureException(err);
|
|
26292
26304
|
};
|
|
26293
26305
|
// eslint-disable-next-line
|
|
26294
26306
|
const rejectionHandler = (event) => {
|
|
26295
|
-
const reason =
|
|
26307
|
+
const reason = event && 'reason' in event ? event.reason : undefined;
|
|
26296
26308
|
const err = reason instanceof Error
|
|
26297
26309
|
? reason
|
|
26298
26310
|
: new Error(typeof reason === 'string' ? reason : 'Unhandled promise rejection');
|
|
@@ -26746,7 +26758,7 @@ class RecorderBrowserSDK {
|
|
|
26746
26758
|
constructor() {
|
|
26747
26759
|
this.intervals = {
|
|
26748
26760
|
restart: null,
|
|
26749
|
-
bufferSnapshot: null
|
|
26761
|
+
bufferSnapshot: null
|
|
26750
26762
|
};
|
|
26751
26763
|
this.startedAt = '';
|
|
26752
26764
|
this.stoppedAt = '';
|
|
@@ -26755,6 +26767,9 @@ class RecorderBrowserSDK {
|
|
|
26755
26767
|
* Full snapshot.
|
|
26756
26768
|
*/
|
|
26757
26769
|
takeFullSnapshot() {
|
|
26770
|
+
if (!this.stopFn) {
|
|
26771
|
+
return;
|
|
26772
|
+
}
|
|
26758
26773
|
rrweb__WEBPACK_IMPORTED_MODULE_6__.record.takeFullSnapshot();
|
|
26759
26774
|
}
|
|
26760
26775
|
/**
|
|
@@ -26785,7 +26800,7 @@ class RecorderBrowserSDK {
|
|
|
26785
26800
|
return;
|
|
26786
26801
|
}
|
|
26787
26802
|
this._handleLiveSessionEvent(event, ts, sessionId, sessionType);
|
|
26788
|
-
}
|
|
26803
|
+
}
|
|
26789
26804
|
});
|
|
26790
26805
|
this.takeFullSnapshot();
|
|
26791
26806
|
this._setupPeriodicSnapshots(sessionId, sessionType);
|
|
@@ -26809,6 +26824,7 @@ class RecorderBrowserSDK {
|
|
|
26809
26824
|
stop() {
|
|
26810
26825
|
var _a, _b, _c;
|
|
26811
26826
|
(_a = this.stopFn) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
26827
|
+
this.stopFn = undefined;
|
|
26812
26828
|
if (!((_b = this.config) === null || _b === void 0 ? void 0 : _b.useWebsocket)) {
|
|
26813
26829
|
(_c = this.socketService) === null || _c === void 0 ? void 0 : _c.close();
|
|
26814
26830
|
}
|
|
@@ -26855,14 +26871,14 @@ class RecorderBrowserSDK {
|
|
|
26855
26871
|
this._applyConsoleMasking(event);
|
|
26856
26872
|
const packedEvent = (0,_rrweb_packer__WEBPACK_IMPORTED_MODULE_0__.pack)(event);
|
|
26857
26873
|
this.stoppedAt = new Date(ts).toISOString();
|
|
26858
|
-
await this.crashBuffer.
|
|
26874
|
+
await this.crashBuffer.appendEvent({
|
|
26859
26875
|
ts,
|
|
26860
26876
|
isFullSnapshot: event.type === _rrweb_types__WEBPACK_IMPORTED_MODULE_1__.EventType.FullSnapshot,
|
|
26861
26877
|
event: {
|
|
26862
26878
|
event: packedEvent,
|
|
26863
26879
|
eventType: event.type,
|
|
26864
|
-
timestamp: ts
|
|
26865
|
-
}
|
|
26880
|
+
timestamp: ts
|
|
26881
|
+
}
|
|
26866
26882
|
});
|
|
26867
26883
|
}
|
|
26868
26884
|
catch (error) {
|
|
@@ -26887,7 +26903,7 @@ class RecorderBrowserSDK {
|
|
|
26887
26903
|
eventType: event.type,
|
|
26888
26904
|
timestamp: ts,
|
|
26889
26905
|
debugSessionId: sessionId,
|
|
26890
|
-
debugSessionType: sessionType
|
|
26906
|
+
debugSessionType: sessionType
|
|
26891
26907
|
});
|
|
26892
26908
|
}
|
|
26893
26909
|
/**
|
|
@@ -26901,7 +26917,7 @@ class RecorderBrowserSDK {
|
|
|
26901
26917
|
sampling: { canvas: 5 },
|
|
26902
26918
|
recordCanvas: (_c = this.config) === null || _c === void 0 ? void 0 : _c.recordCanvas,
|
|
26903
26919
|
dataURLOptions: { type: 'image/webp', quality: 0.1 },
|
|
26904
|
-
plugins: [(0,_rrweb_rrweb_plugin_console_record__WEBPACK_IMPORTED_MODULE_3__.getRecordConsolePlugin)({ level: ['log', 'error'] })]
|
|
26920
|
+
plugins: [(0,_rrweb_rrweb_plugin_console_record__WEBPACK_IMPORTED_MODULE_3__.getRecordConsolePlugin)({ level: ['log', 'error'] })]
|
|
26905
26921
|
};
|
|
26906
26922
|
if (maskingConfig.maskInputOptions) {
|
|
26907
26923
|
options.maskInputOptions = maskingConfig.maskInputOptions;
|
|
@@ -26963,7 +26979,7 @@ class ApiService {
|
|
|
26963
26979
|
this.config = {
|
|
26964
26980
|
apiKey: '',
|
|
26965
26981
|
apiBaseUrl: '',
|
|
26966
|
-
exporterEndpoint: ''
|
|
26982
|
+
exporterEndpoint: ''
|
|
26967
26983
|
};
|
|
26968
26984
|
}
|
|
26969
26985
|
/**
|
|
@@ -26973,7 +26989,7 @@ class ApiService {
|
|
|
26973
26989
|
init(config) {
|
|
26974
26990
|
this.config = {
|
|
26975
26991
|
...this.config,
|
|
26976
|
-
...config
|
|
26992
|
+
...config
|
|
26977
26993
|
};
|
|
26978
26994
|
}
|
|
26979
26995
|
/**
|
|
@@ -26991,6 +27007,14 @@ class ApiService {
|
|
|
26991
27007
|
async startSession(request, signal) {
|
|
26992
27008
|
return this.makeRequest('/debug-sessions/start', 'POST', request, signal);
|
|
26993
27009
|
}
|
|
27010
|
+
/**
|
|
27011
|
+
* Create a new error span session
|
|
27012
|
+
* @param request - Session create error span request data
|
|
27013
|
+
* @param signal - Optional AbortSignal for request cancellation
|
|
27014
|
+
*/
|
|
27015
|
+
async createErrorSession(request, signal) {
|
|
27016
|
+
return this.makeRequest('/debug-sessions/error-span/start', 'POST', request, signal);
|
|
27017
|
+
}
|
|
26994
27018
|
/**
|
|
26995
27019
|
* Stop an active debug session
|
|
26996
27020
|
* @param sessionId - ID of the session to stop
|
|
@@ -27036,6 +27060,15 @@ class ApiService {
|
|
|
27036
27060
|
async checkRemoteSession(requestBody, signal) {
|
|
27037
27061
|
return this.makeRequest('/remote-debug-session/check', 'POST', requestBody, signal);
|
|
27038
27062
|
}
|
|
27063
|
+
updateSessionAttributes(sessionId, requestBody, signal) {
|
|
27064
|
+
return this.makeRequest(`/debug-sessions/${sessionId}`, 'PATCH', requestBody, signal);
|
|
27065
|
+
}
|
|
27066
|
+
/**
|
|
27067
|
+
* Export events to the session debugger API
|
|
27068
|
+
*/
|
|
27069
|
+
async exportEvents(sessionId, requestBody, signal) {
|
|
27070
|
+
return this.makeRequest(`/debug-sessions/${sessionId}/rrweb-events`, 'POST', requestBody, signal);
|
|
27071
|
+
}
|
|
27039
27072
|
/**
|
|
27040
27073
|
* Make a request to the session debugger API
|
|
27041
27074
|
* @param path - API endpoint path (relative to the base URL)
|
|
@@ -27050,14 +27083,14 @@ class ApiService {
|
|
|
27050
27083
|
body: body ? JSON.stringify(body) : null,
|
|
27051
27084
|
headers: {
|
|
27052
27085
|
'Content-Type': 'application/json',
|
|
27053
|
-
...(this.config.apiKey && { 'X-Api-Key': this.config.apiKey })
|
|
27054
|
-
}
|
|
27086
|
+
...(this.config.apiKey && { 'X-Api-Key': this.config.apiKey })
|
|
27087
|
+
}
|
|
27055
27088
|
};
|
|
27056
27089
|
try {
|
|
27057
27090
|
const response = await fetch(url, {
|
|
27058
27091
|
...params,
|
|
27059
27092
|
credentials: 'include',
|
|
27060
|
-
signal
|
|
27093
|
+
signal
|
|
27061
27094
|
});
|
|
27062
27095
|
if (!response.ok) {
|
|
27063
27096
|
throw new Error('Network response was not ok: ' + response.statusText);
|
|
@@ -27104,6 +27137,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
27104
27137
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
27105
27138
|
/* harmony export */ CrashBufferService: () => (/* binding */ CrashBufferService)
|
|
27106
27139
|
/* harmony export */ });
|
|
27140
|
+
/* harmony import */ var _opentelemetry_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @opentelemetry/api */ "../../node_modules/@opentelemetry/api/build/esm/trace/status.js");
|
|
27141
|
+
|
|
27107
27142
|
class CrashBufferService {
|
|
27108
27143
|
constructor(db, tabId, windowMs) {
|
|
27109
27144
|
this.db = db;
|
|
@@ -27116,6 +27151,7 @@ class CrashBufferService {
|
|
|
27116
27151
|
this.lastSeenEventTs = 0;
|
|
27117
27152
|
this.requiresFullSnapshot = true;
|
|
27118
27153
|
this.lastTouchAt = 0;
|
|
27154
|
+
this.listeners = new Map();
|
|
27119
27155
|
}
|
|
27120
27156
|
async _safe(fn, fallback) {
|
|
27121
27157
|
try {
|
|
@@ -27129,11 +27165,11 @@ class CrashBufferService {
|
|
|
27129
27165
|
await this._safe(async () => {
|
|
27130
27166
|
await this.db.setAttrs({
|
|
27131
27167
|
tabId: this.tabId,
|
|
27132
|
-
...attrs
|
|
27168
|
+
...attrs
|
|
27133
27169
|
});
|
|
27134
27170
|
}, undefined);
|
|
27135
27171
|
}
|
|
27136
|
-
async
|
|
27172
|
+
async appendEvent(payload, _windowMs) {
|
|
27137
27173
|
this.lastSeenEventTs = Math.max(this.lastSeenEventTs, payload.ts || 0);
|
|
27138
27174
|
if (!this.isActive)
|
|
27139
27175
|
return;
|
|
@@ -27143,11 +27179,11 @@ class CrashBufferService {
|
|
|
27143
27179
|
return;
|
|
27144
27180
|
}
|
|
27145
27181
|
await this._safe(async () => {
|
|
27146
|
-
await this.db.
|
|
27182
|
+
await this.db.appendEvent({
|
|
27147
27183
|
tabId: this.tabId,
|
|
27148
27184
|
ts: payload.ts,
|
|
27149
27185
|
isFullSnapshot: payload.isFullSnapshot,
|
|
27150
|
-
event: payload.event
|
|
27186
|
+
event: payload.event
|
|
27151
27187
|
});
|
|
27152
27188
|
}, undefined);
|
|
27153
27189
|
if (isFullSnapshot && this.requiresFullSnapshot) {
|
|
@@ -27161,20 +27197,61 @@ class CrashBufferService {
|
|
|
27161
27197
|
}
|
|
27162
27198
|
this.pruneSoon();
|
|
27163
27199
|
}
|
|
27164
|
-
async
|
|
27165
|
-
|
|
27200
|
+
async appendSpans(payload, _windowMs) {
|
|
27201
|
+
for (const p of payload) {
|
|
27202
|
+
this.lastSeenEventTs = Math.max(this.lastSeenEventTs, p.ts || 0);
|
|
27203
|
+
}
|
|
27166
27204
|
if (!this.isActive)
|
|
27167
27205
|
return;
|
|
27206
|
+
let errorEvent = null;
|
|
27168
27207
|
await this._safe(async () => {
|
|
27169
|
-
|
|
27170
|
-
|
|
27171
|
-
|
|
27172
|
-
|
|
27208
|
+
const records = payload.map((p) => {
|
|
27209
|
+
var _a, _b;
|
|
27210
|
+
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) {
|
|
27211
|
+
errorEvent = { ts: p.ts, span: p.span };
|
|
27212
|
+
}
|
|
27213
|
+
return {
|
|
27214
|
+
tabId: this.tabId,
|
|
27215
|
+
ts: p.ts,
|
|
27216
|
+
span: p.span
|
|
27217
|
+
};
|
|
27173
27218
|
});
|
|
27219
|
+
await this.db.appendSpans(records);
|
|
27174
27220
|
}, undefined);
|
|
27175
27221
|
this.pruneSoon();
|
|
27222
|
+
if (errorEvent) {
|
|
27223
|
+
this._emit('error-span-appended', errorEvent);
|
|
27224
|
+
}
|
|
27225
|
+
}
|
|
27226
|
+
on(event, listener) {
|
|
27227
|
+
const set = this.listeners.get(event) || new Set();
|
|
27228
|
+
set.add(listener);
|
|
27229
|
+
this.listeners.set(event, set);
|
|
27230
|
+
return () => this.off(event, listener);
|
|
27231
|
+
}
|
|
27232
|
+
off(event, listener) {
|
|
27233
|
+
const set = this.listeners.get(event);
|
|
27234
|
+
if (!set)
|
|
27235
|
+
return;
|
|
27236
|
+
set.delete(listener);
|
|
27237
|
+
if (set.size === 0)
|
|
27238
|
+
this.listeners.delete(event);
|
|
27239
|
+
}
|
|
27240
|
+
_emit(event, payload) {
|
|
27241
|
+
const set = this.listeners.get(event);
|
|
27242
|
+
if (!set || set.size === 0)
|
|
27243
|
+
return;
|
|
27244
|
+
for (const fn of Array.from(set)) {
|
|
27245
|
+
try {
|
|
27246
|
+
;
|
|
27247
|
+
fn(payload);
|
|
27248
|
+
}
|
|
27249
|
+
catch (_e) {
|
|
27250
|
+
// never throw into app code
|
|
27251
|
+
}
|
|
27252
|
+
}
|
|
27176
27253
|
}
|
|
27177
|
-
async snapshot(now = Date.now()) {
|
|
27254
|
+
async snapshot(_windowMs, now = Date.now()) {
|
|
27178
27255
|
const toTs = now;
|
|
27179
27256
|
const fromTs = Math.max(0, toTs - this.windowMs);
|
|
27180
27257
|
// Always include a full snapshot "anchor" if one exists at/before the window start.
|
|
@@ -27185,7 +27262,7 @@ class CrashBufferService {
|
|
|
27185
27262
|
const [rrweb, spans, attrs] = await Promise.all([
|
|
27186
27263
|
this._safe(() => this.db.getRrwebEventsWindow(this.tabId, rrwebFromTs, toTs), []),
|
|
27187
27264
|
this._safe(() => this.db.getOtelSpansWindow(this.tabId, fromTs, toTs), []),
|
|
27188
|
-
this._safe(() => this.db.getAttrs(this.tabId), null)
|
|
27265
|
+
this._safe(() => this.db.getAttrs(this.tabId), null)
|
|
27189
27266
|
]);
|
|
27190
27267
|
const rrwebSorted = rrweb
|
|
27191
27268
|
.sort((a, b) => a.ts - b.ts)
|
|
@@ -27202,14 +27279,16 @@ class CrashBufferService {
|
|
|
27202
27279
|
return {
|
|
27203
27280
|
rrwebEvents,
|
|
27204
27281
|
otelSpans,
|
|
27205
|
-
attrs: attrs
|
|
27206
|
-
|
|
27207
|
-
|
|
27208
|
-
|
|
27209
|
-
|
|
27282
|
+
attrs: attrs
|
|
27283
|
+
? {
|
|
27284
|
+
sessionAttributes: attrs.sessionAttributes,
|
|
27285
|
+
resourceAttributes: attrs.resourceAttributes,
|
|
27286
|
+
userAttributes: attrs.userAttributes
|
|
27287
|
+
}
|
|
27288
|
+
: null,
|
|
27210
27289
|
windowMs: this.windowMs,
|
|
27211
27290
|
fromTs: replayStartTs,
|
|
27212
|
-
toTs
|
|
27291
|
+
toTs
|
|
27213
27292
|
};
|
|
27214
27293
|
}
|
|
27215
27294
|
async clear() {
|
|
@@ -27260,8 +27339,9 @@ class CrashBufferService {
|
|
|
27260
27339
|
this.lastTouchAt = now;
|
|
27261
27340
|
void this._safe(() => this.db.touchTab(this.tabId, now), undefined);
|
|
27262
27341
|
}
|
|
27263
|
-
this.pruneInFlight = this._safe(() => this.db.pruneOlderThanWithRrwebSnapshotAnchor(this.tabId, cutoff), undefined)
|
|
27264
|
-
|
|
27342
|
+
this.pruneInFlight = this._safe(() => this.db.pruneOlderThanWithRrwebSnapshotAnchor(this.tabId, cutoff), undefined).finally(() => {
|
|
27343
|
+
this.pruneInFlight = null;
|
|
27344
|
+
});
|
|
27265
27345
|
}
|
|
27266
27346
|
}
|
|
27267
27347
|
|
|
@@ -27315,7 +27395,7 @@ class IndexedDBService {
|
|
|
27315
27395
|
});
|
|
27316
27396
|
}
|
|
27317
27397
|
/**
|
|
27318
|
-
* @deprecated Prefer `
|
|
27398
|
+
* @deprecated Prefer `appendEvent(tabId, ...)` and `getRrwebEventsWindow(...)`.
|
|
27319
27399
|
* This writes into the legacy store with no pruning semantics.
|
|
27320
27400
|
*/
|
|
27321
27401
|
async saveEvent(event) {
|
|
@@ -27362,7 +27442,7 @@ class IndexedDBService {
|
|
|
27362
27442
|
const db = await this.dbPromise;
|
|
27363
27443
|
const payload = {
|
|
27364
27444
|
...attrs,
|
|
27365
|
-
updatedAt: (_a = attrs.updatedAt) !== null && _a !== void 0 ? _a : Date.now()
|
|
27445
|
+
updatedAt: (_a = attrs.updatedAt) !== null && _a !== void 0 ? _a : Date.now()
|
|
27366
27446
|
};
|
|
27367
27447
|
return new Promise((resolve, reject) => {
|
|
27368
27448
|
const tx = db.transaction(attrsStore, 'readwrite');
|
|
@@ -27400,9 +27480,7 @@ class IndexedDBService {
|
|
|
27400
27480
|
const getReq = store.get(tabId);
|
|
27401
27481
|
getReq.onsuccess = () => {
|
|
27402
27482
|
const existing = (getReq.result || null);
|
|
27403
|
-
const next = existing
|
|
27404
|
-
? { ...existing, updatedAt }
|
|
27405
|
-
: { tabId, updatedAt };
|
|
27483
|
+
const next = existing ? { ...existing, updatedAt } : { tabId, updatedAt };
|
|
27406
27484
|
store.put(next);
|
|
27407
27485
|
};
|
|
27408
27486
|
getReq.onerror = () => reject(getReq.error);
|
|
@@ -27433,7 +27511,7 @@ class IndexedDBService {
|
|
|
27433
27511
|
}
|
|
27434
27512
|
return cleared;
|
|
27435
27513
|
}
|
|
27436
|
-
async
|
|
27514
|
+
async appendEvent(record) {
|
|
27437
27515
|
const db = await this.dbPromise;
|
|
27438
27516
|
return new Promise((resolve, reject) => {
|
|
27439
27517
|
const tx = db.transaction(rrwebEventsStore, 'readwrite');
|
|
@@ -27442,11 +27520,16 @@ class IndexedDBService {
|
|
|
27442
27520
|
tx.onerror = () => reject(tx.error);
|
|
27443
27521
|
});
|
|
27444
27522
|
}
|
|
27445
|
-
async
|
|
27523
|
+
async appendSpans(records) {
|
|
27524
|
+
if (!records.length)
|
|
27525
|
+
return;
|
|
27446
27526
|
const db = await this.dbPromise;
|
|
27447
27527
|
return new Promise((resolve, reject) => {
|
|
27448
27528
|
const tx = db.transaction(otelSpansStore, 'readwrite');
|
|
27449
|
-
tx.objectStore(otelSpansStore)
|
|
27529
|
+
const store = tx.objectStore(otelSpansStore);
|
|
27530
|
+
for (const record of records) {
|
|
27531
|
+
store.add(record);
|
|
27532
|
+
}
|
|
27450
27533
|
tx.oncomplete = () => resolve();
|
|
27451
27534
|
tx.onerror = () => reject(tx.error);
|
|
27452
27535
|
});
|
|
@@ -27522,12 +27605,11 @@ class IndexedDBService {
|
|
|
27522
27605
|
const tx = db.transaction([rrwebEventsStore, otelSpansStore], 'readwrite');
|
|
27523
27606
|
const rrwebStore = tx.objectStore(rrwebEventsStore);
|
|
27524
27607
|
const spanStore = tx.objectStore(otelSpansStore);
|
|
27525
|
-
Promise.all([
|
|
27526
|
-
|
|
27527
|
-
pruneStore(spanStore, spansRange),
|
|
27528
|
-
]).then(() => {
|
|
27608
|
+
Promise.all([pruneStore(rrwebStore, rrwebRange), pruneStore(spanStore, spansRange)])
|
|
27609
|
+
.then(() => {
|
|
27529
27610
|
// noop; completion is signaled by tx.oncomplete
|
|
27530
|
-
})
|
|
27611
|
+
})
|
|
27612
|
+
.catch((e) => {
|
|
27531
27613
|
reject(e);
|
|
27532
27614
|
});
|
|
27533
27615
|
tx.oncomplete = () => resolve();
|
|
@@ -27565,12 +27647,11 @@ class IndexedDBService {
|
|
|
27565
27647
|
const tx = db.transaction([rrwebEventsStore, otelSpansStore], 'readwrite');
|
|
27566
27648
|
const rrwebStore = tx.objectStore(rrwebEventsStore);
|
|
27567
27649
|
const spanStore = tx.objectStore(otelSpansStore);
|
|
27568
|
-
Promise.all([
|
|
27569
|
-
|
|
27570
|
-
pruneStore(spanStore, spansRange),
|
|
27571
|
-
]).then(() => {
|
|
27650
|
+
Promise.all([pruneStore(rrwebStore, rrwebRange), pruneStore(spanStore, spansRange)])
|
|
27651
|
+
.then(() => {
|
|
27572
27652
|
// noop
|
|
27573
|
-
})
|
|
27653
|
+
})
|
|
27654
|
+
.catch((e) => reject(e));
|
|
27574
27655
|
tx.oncomplete = () => resolve();
|
|
27575
27656
|
tx.onerror = () => reject(tx.error);
|
|
27576
27657
|
});
|
|
@@ -27604,10 +27685,12 @@ class IndexedDBService {
|
|
|
27604
27685
|
const r = attr.delete(tabId);
|
|
27605
27686
|
r.onsuccess = () => res();
|
|
27606
27687
|
r.onerror = () => rej(r.error);
|
|
27607
|
-
})
|
|
27608
|
-
])
|
|
27688
|
+
})
|
|
27689
|
+
])
|
|
27690
|
+
.then(() => {
|
|
27609
27691
|
// noop
|
|
27610
|
-
})
|
|
27692
|
+
})
|
|
27693
|
+
.catch((e) => reject(e));
|
|
27611
27694
|
tx.oncomplete = () => resolve();
|
|
27612
27695
|
tx.onerror = () => reject(tx.error);
|
|
27613
27696
|
});
|
|
@@ -28035,17 +28118,13 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28035
28118
|
return this._sessionAttributes || {};
|
|
28036
28119
|
}
|
|
28037
28120
|
set sessionAttributes(attributes) {
|
|
28038
|
-
var _a;
|
|
28039
28121
|
this._sessionAttributes = attributes;
|
|
28040
|
-
(_a = this._crashBuffer) === null || _a === void 0 ? void 0 : _a.setAttrs({ sessionAttributes: this.sessionAttributes });
|
|
28041
28122
|
}
|
|
28042
28123
|
get userAttributes() {
|
|
28043
28124
|
return this._userAttributes;
|
|
28044
28125
|
}
|
|
28045
28126
|
set userAttributes(userAttributes) {
|
|
28046
|
-
var _a;
|
|
28047
28127
|
this._userAttributes = userAttributes;
|
|
28048
|
-
(_a = this._crashBuffer) === null || _a === void 0 ? void 0 : _a.setAttrs({ userAttributes: this._userAttributes });
|
|
28049
28128
|
}
|
|
28050
28129
|
get error() {
|
|
28051
28130
|
return this._error;
|
|
@@ -28115,7 +28194,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28115
28194
|
}
|
|
28116
28195
|
this._configs = {
|
|
28117
28196
|
..._config__WEBPACK_IMPORTED_MODULE_5__.BASE_CONFIG,
|
|
28118
|
-
apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || ''
|
|
28197
|
+
apiKey: ((_a = this.session) === null || _a === void 0 ? void 0 : _a.tempApiKey) || ''
|
|
28119
28198
|
};
|
|
28120
28199
|
}
|
|
28121
28200
|
/**
|
|
@@ -28123,7 +28202,6 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28123
28202
|
* @param configs - custom configurations for session debugger
|
|
28124
28203
|
*/
|
|
28125
28204
|
init(configs) {
|
|
28126
|
-
var _a;
|
|
28127
28205
|
if (typeof window === 'undefined') {
|
|
28128
28206
|
return;
|
|
28129
28207
|
}
|
|
@@ -28135,26 +28213,41 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28135
28213
|
void this._bufferDb.sweepStaleTabs(24 * 60 * 60 * 1000);
|
|
28136
28214
|
(0,_patch__WEBPACK_IMPORTED_MODULE_6__.setMaxCapturingHttpPayloadSize)(this._configs.maxCapturingHttpPayloadSize || _config__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE);
|
|
28137
28215
|
(0,_patch__WEBPACK_IMPORTED_MODULE_6__.setShouldRecordHttpData)(this._configs.captureBody, this._configs.captureHeaders);
|
|
28216
|
+
this._setupCrashBuffer();
|
|
28138
28217
|
this._tracer.init(this._configs);
|
|
28139
28218
|
this._apiService.init(this._configs);
|
|
28140
28219
|
this._sessionWidget.init(this._configs);
|
|
28141
28220
|
this._socketService.init({
|
|
28142
|
-
clientId: this._tracer.clientId,
|
|
28143
28221
|
apiKey: this._configs.apiKey,
|
|
28222
|
+
clientId: this._tracer.clientId,
|
|
28144
28223
|
socketUrl: this._configs.apiBaseUrl || '',
|
|
28145
28224
|
keepAlive: Boolean(this._configs.useWebsocket),
|
|
28146
|
-
usePostMessageFallback: Boolean(this._configs.usePostMessageFallback)
|
|
28225
|
+
usePostMessageFallback: Boolean(this._configs.usePostMessageFallback)
|
|
28147
28226
|
});
|
|
28148
28227
|
this._navigationRecorder.init({
|
|
28149
28228
|
version: this._configs.version,
|
|
28150
28229
|
application: this._configs.application,
|
|
28151
28230
|
environment: this._configs.environment,
|
|
28152
|
-
enabled: this._configs.recordNavigation
|
|
28231
|
+
enabled: this._configs.recordNavigation
|
|
28153
28232
|
});
|
|
28154
28233
|
if (this._configs.apiKey) {
|
|
28155
28234
|
this._recorder.init(this._configs, this._socketService);
|
|
28156
28235
|
}
|
|
28157
|
-
|
|
28236
|
+
if (this.sessionId && (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.started || this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.paused)) {
|
|
28237
|
+
this._start();
|
|
28238
|
+
}
|
|
28239
|
+
else {
|
|
28240
|
+
// Buffer-only recording when there is no active debug session.
|
|
28241
|
+
this._startBufferOnlyRecording();
|
|
28242
|
+
}
|
|
28243
|
+
this._registerWidgetEvents();
|
|
28244
|
+
this._registerSocketServiceListeners();
|
|
28245
|
+
_services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
|
|
28246
|
+
// Emit init observable event
|
|
28247
|
+
this.emit('init', [this]);
|
|
28248
|
+
}
|
|
28249
|
+
_setupCrashBuffer() {
|
|
28250
|
+
var _a;
|
|
28158
28251
|
if ((_a = this._configs.buffering) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
28159
28252
|
const windowMinutes = this._configs.buffering.windowMinutes || 1;
|
|
28160
28253
|
const windowMs = Math.max(10000, windowMinutes * 60 * 1000);
|
|
@@ -28164,24 +28257,17 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28164
28257
|
this._crashBuffer.setAttrs({
|
|
28165
28258
|
sessionAttributes: this.sessionAttributes,
|
|
28166
28259
|
resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
|
|
28167
|
-
userAttributes: this._userAttributes
|
|
28260
|
+
userAttributes: this._userAttributes
|
|
28261
|
+
});
|
|
28262
|
+
this._crashBuffer.on('error-span-appended', (payload) => {
|
|
28263
|
+
if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped || this.sessionId)
|
|
28264
|
+
return;
|
|
28265
|
+
if (!payload.span)
|
|
28266
|
+
return;
|
|
28267
|
+
this._createExceptionSession(payload.span);
|
|
28168
28268
|
});
|
|
28169
28269
|
this._registerCrashBufferLifecycleHandlers();
|
|
28170
28270
|
}
|
|
28171
|
-
if (this.sessionId
|
|
28172
|
-
&& (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.started
|
|
28173
|
-
|| this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.paused)) {
|
|
28174
|
-
this._start();
|
|
28175
|
-
}
|
|
28176
|
-
else {
|
|
28177
|
-
// Buffer-only recording when there is no active debug session.
|
|
28178
|
-
this._startBufferOnlyRecording();
|
|
28179
|
-
}
|
|
28180
|
-
this._registerWidgetEvents();
|
|
28181
|
-
this._registerSocketServiceListeners();
|
|
28182
|
-
_services_messaging_service__WEBPACK_IMPORTED_MODULE_9__["default"].sendMessage('state-change', this.sessionState);
|
|
28183
|
-
// Emit init observable event
|
|
28184
|
-
this.emit('init', [this]);
|
|
28185
28271
|
}
|
|
28186
28272
|
_registerCrashBufferLifecycleHandlers() {
|
|
28187
28273
|
if (this._bufferLifecycleHandlersRegistered)
|
|
@@ -28253,8 +28339,9 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28253
28339
|
type: 'success',
|
|
28254
28340
|
message: 'Your session was saved',
|
|
28255
28341
|
button: {
|
|
28256
|
-
text: 'Open session',
|
|
28257
|
-
|
|
28342
|
+
text: 'Open session',
|
|
28343
|
+
url: sessionUrl
|
|
28344
|
+
}
|
|
28258
28345
|
}, 5000);
|
|
28259
28346
|
return res;
|
|
28260
28347
|
}
|
|
@@ -28303,7 +28390,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28303
28390
|
else {
|
|
28304
28391
|
const request = {
|
|
28305
28392
|
sessionAttributes: { comment },
|
|
28306
|
-
stoppedAt: this._recorder.stoppedAt
|
|
28393
|
+
stoppedAt: this._recorder.stoppedAt
|
|
28307
28394
|
};
|
|
28308
28395
|
const response = await this._apiService.stopSession(this.sessionId, request);
|
|
28309
28396
|
_eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_RESPONSE, response);
|
|
@@ -28361,7 +28448,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28361
28448
|
/**
|
|
28362
28449
|
* Set the session attributes
|
|
28363
28450
|
* @param attributes - the attributes to set
|
|
28364
|
-
|
|
28451
|
+
*/
|
|
28365
28452
|
setSessionAttributes(attributes) {
|
|
28366
28453
|
this._sessionAttributes = attributes;
|
|
28367
28454
|
}
|
|
@@ -28394,16 +28481,12 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28394
28481
|
const normalizedError = this._normalizeError(error);
|
|
28395
28482
|
const normalizedErrorInfo = this._normalizeErrorInfo(errorInfo);
|
|
28396
28483
|
this._tracer.captureException(normalizedError, normalizedErrorInfo);
|
|
28397
|
-
// If user isn't actively recording, auto-flush the crash buffer.
|
|
28398
|
-
if (this.sessionState === _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped && !this.sessionId) {
|
|
28399
|
-
void this.flushBuffer({ reason: 'exception' });
|
|
28400
|
-
}
|
|
28401
28484
|
}
|
|
28402
28485
|
catch (e) {
|
|
28403
28486
|
this.error = (e === null || e === void 0 ? void 0 : e.message) || 'Failed to capture exception';
|
|
28404
28487
|
}
|
|
28405
28488
|
}
|
|
28406
|
-
async
|
|
28489
|
+
async _flushBuffer(sessionId) {
|
|
28407
28490
|
var _a, _b;
|
|
28408
28491
|
if (!((_b = (_a = this._configs) === null || _a === void 0 ? void 0 : _a.buffering) === null || _b === void 0 ? void 0 : _b.enabled))
|
|
28409
28492
|
return null;
|
|
@@ -28412,49 +28495,39 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28412
28495
|
if (this._isFlushingBuffer)
|
|
28413
28496
|
return null;
|
|
28414
28497
|
// Don’t flush while a live recording is active.
|
|
28415
|
-
if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped
|
|
28498
|
+
if (this.sessionState !== _types__WEBPACK_IMPORTED_MODULE_4__.SessionState.stopped)
|
|
28416
28499
|
return null;
|
|
28417
28500
|
this._isFlushingBuffer = true;
|
|
28418
28501
|
try {
|
|
28419
|
-
|
|
28420
|
-
|
|
28421
|
-
|
|
28422
|
-
|
|
28423
|
-
|
|
28424
|
-
});
|
|
28502
|
+
// await this._crashBuffer.setAttrs({
|
|
28503
|
+
// sessionAttributes: this.sessionAttributes,
|
|
28504
|
+
// resourceAttributes: getNavigatorInfo(),
|
|
28505
|
+
// userAttributes: this._userAttributes
|
|
28506
|
+
// })
|
|
28425
28507
|
const snapshot = await this._crashBuffer.snapshot();
|
|
28426
28508
|
if (snapshot.rrwebEvents.length === 0 && snapshot.otelSpans.length === 0) {
|
|
28427
28509
|
return null;
|
|
28428
28510
|
}
|
|
28429
|
-
|
|
28430
|
-
|
|
28431
|
-
|
|
28432
|
-
|
|
28433
|
-
|
|
28434
|
-
|
|
28435
|
-
|
|
28436
|
-
|
|
28437
|
-
|
|
28438
|
-
|
|
28439
|
-
|
|
28440
|
-
|
|
28441
|
-
|
|
28442
|
-
events: snapshot.rrwebEvents.map((e) => e.event),
|
|
28443
|
-
spans: snapshot.otelSpans.map((s) => s.span),
|
|
28444
|
-
attrs: snapshot.attrs,
|
|
28445
|
-
},
|
|
28446
|
-
};
|
|
28447
|
-
try {
|
|
28448
|
-
const res = await this._apiService.startSession(request);
|
|
28449
|
-
await this._crashBuffer.clear();
|
|
28450
|
-
return res;
|
|
28451
|
-
}
|
|
28452
|
-
catch (_e) {
|
|
28453
|
-
// swallow: flush is best-effort; never throw into app code
|
|
28454
|
-
return null;
|
|
28511
|
+
if (sessionId) {
|
|
28512
|
+
const spans = snapshot.otelSpans.map((s) => s.span);
|
|
28513
|
+
const events = snapshot.rrwebEvents.map((e) => e.event);
|
|
28514
|
+
await Promise.all([
|
|
28515
|
+
this._tracer.exportTraces(spans),
|
|
28516
|
+
this._apiService.exportEvents(sessionId, { events }),
|
|
28517
|
+
this._apiService.updateSessionAttributes(sessionId, {
|
|
28518
|
+
name: this._getSessionName(),
|
|
28519
|
+
sessionAttributes: this.sessionAttributes,
|
|
28520
|
+
resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
|
|
28521
|
+
userAttributes: this._userAttributes || undefined
|
|
28522
|
+
})
|
|
28523
|
+
]);
|
|
28455
28524
|
}
|
|
28456
28525
|
}
|
|
28526
|
+
catch (_e) {
|
|
28527
|
+
// swallow: flush is best-effort; never throw into app code
|
|
28528
|
+
}
|
|
28457
28529
|
finally {
|
|
28530
|
+
await this._crashBuffer.clear();
|
|
28458
28531
|
this._isFlushingBuffer = false;
|
|
28459
28532
|
}
|
|
28460
28533
|
}
|
|
@@ -28471,11 +28544,11 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28471
28544
|
const payload = {
|
|
28472
28545
|
sessionAttributes: {
|
|
28473
28546
|
...this.sessionAttributes,
|
|
28474
|
-
...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.sessionAttributes) || {})
|
|
28547
|
+
...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.sessionAttributes) || {})
|
|
28475
28548
|
},
|
|
28476
28549
|
resourceAttributes: {
|
|
28477
28550
|
...(0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
|
|
28478
|
-
...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {})
|
|
28551
|
+
...((sessionPayload === null || sessionPayload === void 0 ? void 0 : sessionPayload.resourceAttributes) || {})
|
|
28479
28552
|
},
|
|
28480
28553
|
userAttributes: this._userAttributes
|
|
28481
28554
|
};
|
|
@@ -28603,8 +28676,8 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28603
28676
|
message: 'Your session was auto-saved due to an error',
|
|
28604
28677
|
button: {
|
|
28605
28678
|
text: 'Open session',
|
|
28606
|
-
url: (_a = payload === null || payload === void 0 ? void 0 : payload.data) === null || _a === void 0 ? void 0 : _a.url
|
|
28607
|
-
}
|
|
28679
|
+
url: (_a = payload === null || payload === void 0 ? void 0 : payload.data) === null || _a === void 0 ? void 0 : _a.url
|
|
28680
|
+
}
|
|
28608
28681
|
}, 5000);
|
|
28609
28682
|
});
|
|
28610
28683
|
this._socketService.on(_config__WEBPACK_IMPORTED_MODULE_5__.REMOTE_SESSION_RECORDING_START, (payload) => {
|
|
@@ -28620,11 +28693,21 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28620
28693
|
}
|
|
28621
28694
|
});
|
|
28622
28695
|
this._socketService.on(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_SAVE_BUFFER_EVENT, (payload) => {
|
|
28623
|
-
|
|
28624
|
-
|
|
28625
|
-
|
|
28696
|
+
var _a;
|
|
28697
|
+
if (!((_a = payload === null || payload === void 0 ? void 0 : payload.debugSession) === null || _a === void 0 ? void 0 : _a._id))
|
|
28698
|
+
return;
|
|
28699
|
+
void this._flushBuffer(payload.debugSession._id);
|
|
28626
28700
|
});
|
|
28627
28701
|
}
|
|
28702
|
+
async _createExceptionSession(span) {
|
|
28703
|
+
try {
|
|
28704
|
+
const session = await this._apiService.createErrorSession({ span });
|
|
28705
|
+
if (session) {
|
|
28706
|
+
void this._flushBuffer(session._id);
|
|
28707
|
+
}
|
|
28708
|
+
}
|
|
28709
|
+
catch (_ignored) { }
|
|
28710
|
+
}
|
|
28628
28711
|
/**
|
|
28629
28712
|
* Create a new session and start it
|
|
28630
28713
|
*/
|
|
@@ -28636,17 +28719,14 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28636
28719
|
sessionAttributes: this.sessionAttributes,
|
|
28637
28720
|
resourceAttributes: (0,_utils__WEBPACK_IMPORTED_MODULE_3__.getNavigatorInfo)(),
|
|
28638
28721
|
name: this._getSessionName(),
|
|
28639
|
-
...(this._userAttributes ? { userAttributes: this._userAttributes } : {})
|
|
28722
|
+
...(this._userAttributes ? { userAttributes: this._userAttributes } : {})
|
|
28640
28723
|
};
|
|
28641
|
-
const request = !this.continuousRecording ?
|
|
28642
|
-
payload : { debugSessionData: payload };
|
|
28724
|
+
const request = !this.continuousRecording ? payload : { debugSessionData: payload };
|
|
28643
28725
|
const session = this.continuousRecording
|
|
28644
28726
|
? await this._apiService.startContinuousDebugSession(request, signal)
|
|
28645
28727
|
: await this._apiService.startSession(request, signal);
|
|
28646
28728
|
if (session) {
|
|
28647
|
-
session.sessionType = this.continuousRecording
|
|
28648
|
-
? _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS
|
|
28649
|
-
: _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_0__.SessionType.MANUAL;
|
|
28729
|
+
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;
|
|
28650
28730
|
this._setupSessionAndStart(session, false);
|
|
28651
28731
|
}
|
|
28652
28732
|
}
|
|
@@ -28668,7 +28748,7 @@ class SessionRecorder extends lib0_observable__WEBPACK_IMPORTED_MODULE_16__.Obse
|
|
|
28668
28748
|
this._tracer.start(this.sessionId, this.sessionType);
|
|
28669
28749
|
// Ensure we switch from buffer-only recording to session recording cleanly.
|
|
28670
28750
|
void this._recorder.restart(this.sessionId, this.sessionType);
|
|
28671
|
-
this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType
|
|
28751
|
+
this._navigationRecorder.start({ sessionId: this.sessionId, sessionType: this.sessionType });
|
|
28672
28752
|
if (this.session) {
|
|
28673
28753
|
_eventBus__WEBPACK_IMPORTED_MODULE_7__.recorderEventBus.emit(_config__WEBPACK_IMPORTED_MODULE_5__.SESSION_STARTED_EVENT, this.session);
|
|
28674
28754
|
this._socketService.subscribeToSession(this.session);
|
|
@@ -31026,7 +31106,10 @@ var SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {
|
|
|
31026
31106
|
}
|
|
31027
31107
|
SessionRecorderTraceIdRatioBasedSampler.prototype.shouldSample = function (context, traceId) {
|
|
31028
31108
|
if (traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX)
|
|
31029
|
-
|| traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)
|
|
31109
|
+
|| traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)
|
|
31110
|
+
// || traceId.startsWith(MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX)
|
|
31111
|
+
// || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX)
|
|
31112
|
+
) {
|
|
31030
31113
|
return {
|
|
31031
31114
|
decision: _opentelemetry_sdk_trace_base__WEBPACK_IMPORTED_MODULE_1__.SamplingDecision.RECORD_AND_SAMPLED,
|
|
31032
31115
|
};
|
|
@@ -31112,7 +31195,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31112
31195
|
/* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* binding */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
|
|
31113
31196
|
/* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* binding */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
|
|
31114
31197
|
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
|
|
31115
|
-
/* harmony export */
|
|
31198
|
+
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
|
|
31116
31199
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_DEBUG_PREFIX),
|
|
31117
31200
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH: () => (/* binding */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH),
|
|
31118
31201
|
/* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* binding */ MULTIPLAYER_TRACE_DOC_PREFIX),
|
|
@@ -31129,11 +31212,11 @@ var MULTIPLAYER_TRACE_DOC_PREFIX = 'd0cd0c';
|
|
|
31129
31212
|
var MULTIPLAYER_TRACE_DEBUG_PREFIX = 'debdeb';
|
|
31130
31213
|
var MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX = 'cdbcdb';
|
|
31131
31214
|
var MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX = 'cdbcac';
|
|
31132
|
-
var
|
|
31215
|
+
var MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX = 'debcdb';
|
|
31133
31216
|
var MULTIPLAYER_TRACE_PREFIX_MAP = (_a = {},
|
|
31134
31217
|
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS] = MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX,
|
|
31135
31218
|
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.SESSION_CACHE] = MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX,
|
|
31136
|
-
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS_SESSION_CACHE] =
|
|
31219
|
+
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.CONTINUOUS_SESSION_CACHE] = MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX,
|
|
31137
31220
|
_a[_type__WEBPACK_IMPORTED_MODULE_0__.SessionType.MANUAL] = MULTIPLAYER_TRACE_DEBUG_PREFIX,
|
|
31138
31221
|
_a);
|
|
31139
31222
|
var MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH = 8;
|
|
@@ -31237,7 +31320,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31237
31320
|
/* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
|
|
31238
31321
|
/* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
|
|
31239
31322
|
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
|
|
31240
|
-
/* harmony export */
|
|
31323
|
+
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
|
|
31241
31324
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
|
|
31242
31325
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_SESSION_SHORT_ID_LENGTH),
|
|
31243
31326
|
/* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DOC_PREFIX),
|
|
@@ -31286,7 +31369,7 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
31286
31369
|
if (config === void 0) { config = {}; }
|
|
31287
31370
|
this.usePostMessage = false;
|
|
31288
31371
|
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;
|
|
31289
|
-
this.config = __assign(__assign({}, config), { url: url, apiKey: apiKey, headers: headers,
|
|
31372
|
+
this.config = __assign(__assign({}, config), { url: url, apiKey: apiKey, headers: headers, keepAlive: keepAlive, timeoutMillis: timeoutMillis, concurrencyLimit: concurrencyLimit });
|
|
31290
31373
|
this.postMessageType = postMessageType;
|
|
31291
31374
|
this.postMessageTargetOrigin = postMessageTargetOrigin;
|
|
31292
31375
|
this.exporter = this._createExporter();
|
|
@@ -31296,8 +31379,8 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
31296
31379
|
// Filter spans to only include those with Multiplayer trace prefixes
|
|
31297
31380
|
var filteredSpans = spans.filter(function (span) {
|
|
31298
31381
|
var traceId = span.spanContext().traceId;
|
|
31299
|
-
return traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX) ||
|
|
31300
|
-
traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX);
|
|
31382
|
+
return (traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX) ||
|
|
31383
|
+
traceId.startsWith(_constants_constants_base__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX));
|
|
31301
31384
|
});
|
|
31302
31385
|
// Only proceed if there are filtered spans
|
|
31303
31386
|
if (filteredSpans.length === 0) {
|
|
@@ -31324,6 +31407,14 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
31324
31407
|
SessionRecorderBrowserTraceExporter.prototype.shutdown = function () {
|
|
31325
31408
|
return this.exporter.shutdown();
|
|
31326
31409
|
};
|
|
31410
|
+
SessionRecorderBrowserTraceExporter.prototype.exportBuffer = function (spans) {
|
|
31411
|
+
var _this = this;
|
|
31412
|
+
return new Promise(function (resolve) {
|
|
31413
|
+
_this.exporter.export(spans, function (result) {
|
|
31414
|
+
resolve(result);
|
|
31415
|
+
});
|
|
31416
|
+
});
|
|
31417
|
+
};
|
|
31327
31418
|
SessionRecorderBrowserTraceExporter.prototype.exportViaPostMessage = function (spans, resultCallback) {
|
|
31328
31419
|
var _this = this;
|
|
31329
31420
|
if (typeof window === 'undefined') {
|
|
@@ -31334,7 +31425,7 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
31334
31425
|
window.postMessage({
|
|
31335
31426
|
action: 'traces',
|
|
31336
31427
|
type: this.postMessageType,
|
|
31337
|
-
payload: spans.map(function (span) { return _this.
|
|
31428
|
+
payload: spans.map(function (span) { return _this.serializeSpan(span); })
|
|
31338
31429
|
}, this.postMessageTargetOrigin);
|
|
31339
31430
|
resultCallback({ code: 0 });
|
|
31340
31431
|
}
|
|
@@ -31342,38 +31433,17 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
31342
31433
|
resultCallback({ code: 1 });
|
|
31343
31434
|
}
|
|
31344
31435
|
};
|
|
31345
|
-
SessionRecorderBrowserTraceExporter.prototype.
|
|
31346
|
-
var _a;
|
|
31436
|
+
SessionRecorderBrowserTraceExporter.prototype.serializeSpan = function (span) {
|
|
31347
31437
|
var spanContext = span.spanContext();
|
|
31348
|
-
return {
|
|
31349
|
-
_spanContext: spanContext,
|
|
31350
|
-
name: span.name,
|
|
31351
|
-
kind: span.kind,
|
|
31352
|
-
links: span.links,
|
|
31353
|
-
ended: span.ended,
|
|
31354
|
-
events: span.events,
|
|
31355
|
-
status: span.status,
|
|
31356
|
-
endTime: span.endTime,
|
|
31357
|
-
startTime: span.startTime,
|
|
31358
|
-
duration: span.duration,
|
|
31359
|
-
attributes: span.attributes,
|
|
31360
|
-
parentSpanId: (_a = span.parentSpanContext) === null || _a === void 0 ? void 0 : _a.spanId,
|
|
31361
|
-
droppedAttributesCount: span.droppedAttributesCount,
|
|
31362
|
-
droppedEventsCount: span.droppedEventsCount,
|
|
31363
|
-
droppedLinksCount: span.droppedLinksCount,
|
|
31364
|
-
resource: {
|
|
31365
|
-
attributes: span.resource.attributes,
|
|
31366
|
-
asyncAttributesPending: span.resource.asyncAttributesPending,
|
|
31367
|
-
},
|
|
31368
|
-
};
|
|
31438
|
+
return __assign(__assign({}, span), { _spanContext: spanContext });
|
|
31369
31439
|
};
|
|
31370
31440
|
SessionRecorderBrowserTraceExporter.prototype._createExporter = function () {
|
|
31371
31441
|
return new _opentelemetry_exporter_trace_otlp_http__WEBPACK_IMPORTED_MODULE_1__.OTLPTraceExporter({
|
|
31372
31442
|
url: this.config.url,
|
|
31373
|
-
headers: __assign(__assign({ 'Content-Type': 'application/json' }, (this.config.apiKey ? {
|
|
31443
|
+
headers: __assign(__assign({ 'Content-Type': 'application/json' }, (this.config.apiKey ? { Authorization: this.config.apiKey } : {})), (this.config.headers || {})),
|
|
31374
31444
|
timeoutMillis: this.config.timeoutMillis,
|
|
31375
31445
|
keepAlive: this.config.keepAlive,
|
|
31376
|
-
concurrencyLimit: this.config.concurrencyLimit
|
|
31446
|
+
concurrencyLimit: this.config.concurrencyLimit
|
|
31377
31447
|
});
|
|
31378
31448
|
};
|
|
31379
31449
|
SessionRecorderBrowserTraceExporter.prototype.setApiKey = function (apiKey) {
|
|
@@ -31455,7 +31525,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
31455
31525
|
/* harmony export */ MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_URL),
|
|
31456
31526
|
/* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
|
|
31457
31527
|
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
|
|
31458
|
-
/* harmony export */
|
|
31528
|
+
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX),
|
|
31459
31529
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
|
|
31460
31530
|
/* 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),
|
|
31461
31531
|
/* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _constants_constants_browser__WEBPACK_IMPORTED_MODULE_0__.MULTIPLAYER_TRACE_DOC_PREFIX),
|
|
@@ -32072,6 +32142,19 @@ var setGrpcResponseMessage = function (body, options) {
|
|
|
32072
32142
|
|
|
32073
32143
|
/***/ }),
|
|
32074
32144
|
|
|
32145
|
+
/***/ "../session-recorder-common/dist/esm/type/crash-buffer.js":
|
|
32146
|
+
/*!****************************************************************!*\
|
|
32147
|
+
!*** ../session-recorder-common/dist/esm/type/crash-buffer.js ***!
|
|
32148
|
+
\****************************************************************/
|
|
32149
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
32150
|
+
|
|
32151
|
+
"use strict";
|
|
32152
|
+
__webpack_require__.r(__webpack_exports__);
|
|
32153
|
+
|
|
32154
|
+
//# sourceMappingURL=crash-buffer.js.map
|
|
32155
|
+
|
|
32156
|
+
/***/ }),
|
|
32157
|
+
|
|
32075
32158
|
/***/ "../session-recorder-common/dist/esm/type/index.js":
|
|
32076
32159
|
/*!*********************************************************!*\
|
|
32077
32160
|
!*** ../session-recorder-common/dist/esm/type/index.js ***!
|
|
@@ -32088,6 +32171,8 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
32088
32171
|
/* 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");
|
|
32089
32172
|
/* 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");
|
|
32090
32173
|
/* harmony import */ var _session__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./session */ "../session-recorder-common/dist/esm/type/session.js");
|
|
32174
|
+
/* harmony import */ var _crash_buffer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./crash-buffer */ "../session-recorder-common/dist/esm/type/crash-buffer.js");
|
|
32175
|
+
|
|
32091
32176
|
|
|
32092
32177
|
|
|
32093
32178
|
|
|
@@ -50640,7 +50725,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
50640
50725
|
/* 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),
|
|
50641
50726
|
/* harmony export */ MULTIPLAYER_TRACE_CLIENT_ID_LENGTH: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_CLIENT_ID_LENGTH),
|
|
50642
50727
|
/* harmony export */ MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX),
|
|
50643
|
-
/* harmony export */
|
|
50728
|
+
/* 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),
|
|
50644
50729
|
/* harmony export */ MULTIPLAYER_TRACE_DEBUG_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_DEBUG_PREFIX),
|
|
50645
50730
|
/* 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),
|
|
50646
50731
|
/* harmony export */ MULTIPLAYER_TRACE_DOC_PREFIX: () => (/* reexport safe */ _multiplayer_app_session_recorder_common__WEBPACK_IMPORTED_MODULE_7__.MULTIPLAYER_TRACE_DOC_PREFIX),
|