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