@multiplayer-app/session-recorder-react-native 1.3.37 → 2.0.17-alpha.10
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/package.json +4 -4
- package/src/NativeSessionRecorderModule.ts +4 -2
- package/src/NativeSessionRecorderModuleSpec.ts +4 -2
- package/src/NativeSessionRecorderNative.ts +1 -1
- package/src/index.ts +0 -1
- package/src/otel/instrumentations/index.ts +22 -22
- package/src/session-recorder.ts +4 -0
- package/src/types/configs.ts +1 -2
- package/lib/module/NativeSessionRecorderModule.js +0 -5
- package/lib/module/NativeSessionRecorderModule.js.map +0 -1
- package/lib/module/NativeSessionRecorderModuleSpec.js +0 -5
- package/lib/module/NativeSessionRecorderModuleSpec.js.map +0 -1
- package/lib/module/NativeSessionRecorderNative.js +0 -5
- package/lib/module/NativeSessionRecorderNative.js.map +0 -1
- package/lib/module/components/ErrorBoundary.js +0 -32
- package/lib/module/components/ErrorBoundary.js.map +0 -1
- package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js +0 -23
- package/lib/module/components/ScreenRecorderView/ScreenRecorderView.js.map +0 -1
- package/lib/module/components/ScreenRecorderView/index.js +0 -4
- package/lib/module/components/ScreenRecorderView/index.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/ErrorBanner.js +0 -64
- package/lib/module/components/SessionRecorderWidget/ErrorBanner.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/FinalPopover.js +0 -74
- package/lib/module/components/SessionRecorderWidget/FinalPopover.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/FloatingButton.js +0 -191
- package/lib/module/components/SessionRecorderWidget/FloatingButton.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/InitialPopover.js +0 -138
- package/lib/module/components/SessionRecorderWidget/InitialPopover.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/ModalContainer.js +0 -177
- package/lib/module/components/SessionRecorderWidget/ModalContainer.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/ModalHeader.js +0 -27
- package/lib/module/components/SessionRecorderWidget/ModalHeader.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js +0 -133
- package/lib/module/components/SessionRecorderWidget/SessionRecorderWidget.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/icons.js +0 -93
- package/lib/module/components/SessionRecorderWidget/icons.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/index.js +0 -5
- package/lib/module/components/SessionRecorderWidget/index.js.map +0 -1
- package/lib/module/components/SessionRecorderWidget/styles.js +0 -173
- package/lib/module/components/SessionRecorderWidget/styles.js.map +0 -1
- package/lib/module/components/index.js +0 -6
- package/lib/module/components/index.js.map +0 -1
- package/lib/module/config/constants.js +0 -47
- package/lib/module/config/constants.js.map +0 -1
- package/lib/module/config/defaults.js +0 -87
- package/lib/module/config/defaults.js.map +0 -1
- package/lib/module/config/index.js +0 -9
- package/lib/module/config/index.js.map +0 -1
- package/lib/module/config/masking.js +0 -35
- package/lib/module/config/masking.js.map +0 -1
- package/lib/module/config/session-recorder.js +0 -50
- package/lib/module/config/session-recorder.js.map +0 -1
- package/lib/module/config/validators.js +0 -28
- package/lib/module/config/validators.js.map +0 -1
- package/lib/module/config/widget.js +0 -35
- package/lib/module/config/widget.js.map +0 -1
- package/lib/module/context/SessionRecorderContext.js +0 -100
- package/lib/module/context/SessionRecorderContext.js.map +0 -1
- package/lib/module/context/SessionRecorderStore.js +0 -12
- package/lib/module/context/SessionRecorderStore.js.map +0 -1
- package/lib/module/context/createStore.js +0 -27
- package/lib/module/context/createStore.js.map +0 -1
- package/lib/module/context/useSessionRecorderStore.js +0 -45
- package/lib/module/context/useSessionRecorderStore.js.map +0 -1
- package/lib/module/context/useStoreSelector.js +0 -27
- package/lib/module/context/useStoreSelector.js.map +0 -1
- package/lib/module/index.js +0 -14
- package/lib/module/index.js.map +0 -1
- package/lib/module/native/SessionRecorderNative.js +0 -76
- package/lib/module/native/SessionRecorderNative.js.map +0 -1
- package/lib/module/native/index.js +0 -4
- package/lib/module/native/index.js.map +0 -1
- package/lib/module/otel/CrashBufferSpanProcessor.js +0 -42
- package/lib/module/otel/CrashBufferSpanProcessor.js.map +0 -1
- package/lib/module/otel/helpers.js +0 -218
- package/lib/module/otel/helpers.js.map +0 -1
- package/lib/module/otel/index.js +0 -202
- package/lib/module/otel/index.js.map +0 -1
- package/lib/module/otel/instrumentations/index.js +0 -122
- package/lib/module/otel/instrumentations/index.js.map +0 -1
- package/lib/module/package.json +0 -1
- package/lib/module/patch/configs.js +0 -18
- package/lib/module/patch/configs.js.map +0 -1
- package/lib/module/patch/fetch.js +0 -222
- package/lib/module/patch/fetch.js.map +0 -1
- package/lib/module/patch/index.js +0 -6
- package/lib/module/patch/index.js.map +0 -1
- package/lib/module/patch/xhr.js +0 -100
- package/lib/module/patch/xhr.js.map +0 -1
- package/lib/module/recorder/gestureRecorder.js +0 -641
- package/lib/module/recorder/gestureRecorder.js.map +0 -1
- package/lib/module/recorder/index.js +0 -176
- package/lib/module/recorder/index.js.map +0 -1
- package/lib/module/recorder/navigationRecorder.js +0 -238
- package/lib/module/recorder/navigationRecorder.js.map +0 -1
- package/lib/module/recorder/screenRecorder.js +0 -527
- package/lib/module/recorder/screenRecorder.js.map +0 -1
- package/lib/module/services/api.service.js +0 -166
- package/lib/module/services/api.service.js.map +0 -1
- package/lib/module/services/crashBuffer.service.js +0 -280
- package/lib/module/services/crashBuffer.service.js.map +0 -1
- package/lib/module/services/network.service.js +0 -178
- package/lib/module/services/network.service.js.map +0 -1
- package/lib/module/services/screenRecordingService.js +0 -107
- package/lib/module/services/screenRecordingService.js.map +0 -1
- package/lib/module/services/socket.service.js +0 -186
- package/lib/module/services/socket.service.js.map +0 -1
- package/lib/module/services/storage.service.js +0 -178
- package/lib/module/services/storage.service.js.map +0 -1
- package/lib/module/session-recorder.js +0 -750
- package/lib/module/session-recorder.js.map +0 -1
- package/lib/module/types/configs.js +0 -4
- package/lib/module/types/configs.js.map +0 -1
- package/lib/module/types/expo-constants.d.js +0 -2
- package/lib/module/types/expo-constants.d.js.map +0 -1
- package/lib/module/types/index.js +0 -10
- package/lib/module/types/index.js.map +0 -1
- package/lib/module/types/session-recorder.js +0 -68
- package/lib/module/types/session-recorder.js.map +0 -1
- package/lib/module/utils/app-metadata.js +0 -28
- package/lib/module/utils/app-metadata.js.map +0 -1
- package/lib/module/utils/constants.optional.expo.js +0 -6
- package/lib/module/utils/constants.optional.expo.js.map +0 -1
- package/lib/module/utils/constants.optional.js +0 -8
- package/lib/module/utils/constants.optional.js.map +0 -1
- package/lib/module/utils/index.js +0 -11
- package/lib/module/utils/index.js.map +0 -1
- package/lib/module/utils/logger.js +0 -185
- package/lib/module/utils/logger.js.map +0 -1
- package/lib/module/utils/platform.js +0 -340
- package/lib/module/utils/platform.js.map +0 -1
- package/lib/module/utils/request-utils.js +0 -58
- package/lib/module/utils/request-utils.js.map +0 -1
- package/lib/module/utils/rrweb-events.js +0 -276
- package/lib/module/utils/rrweb-events.js.map +0 -1
- package/lib/module/utils/session.js +0 -21
- package/lib/module/utils/session.js.map +0 -1
- package/lib/module/utils/shallowEqual.js +0 -17
- package/lib/module/utils/shallowEqual.js.map +0 -1
- package/lib/module/utils/time.js +0 -17
- package/lib/module/utils/time.js.map +0 -1
- package/lib/module/utils/type-utils.js +0 -69
- package/lib/module/utils/type-utils.js.map +0 -1
- package/lib/module/version.js +0 -4
- package/lib/module/version.js.map +0 -1
- package/lib/typescript/package.json +0 -1
- package/lib/typescript/src/NativeSessionRecorderModule.d.ts +0 -25
- package/lib/typescript/src/NativeSessionRecorderModule.d.ts.map +0 -1
- package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts +0 -25
- package/lib/typescript/src/NativeSessionRecorderModuleSpec.d.ts.map +0 -1
- package/lib/typescript/src/NativeSessionRecorderNative.d.ts +0 -25
- package/lib/typescript/src/NativeSessionRecorderNative.d.ts.map +0 -1
- package/lib/typescript/src/components/ErrorBoundary.d.ts +0 -16
- package/lib/typescript/src/components/ErrorBoundary.d.ts.map +0 -1
- package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts +0 -6
- package/lib/typescript/src/components/ScreenRecorderView/ScreenRecorderView.d.ts.map +0 -1
- package/lib/typescript/src/components/ScreenRecorderView/index.d.ts +0 -2
- package/lib/typescript/src/components/ScreenRecorderView/index.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/ErrorBanner.d.ts +0 -8
- package/lib/typescript/src/components/SessionRecorderWidget/ErrorBanner.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/FinalPopover.d.ts +0 -13
- package/lib/typescript/src/components/SessionRecorderWidget/FinalPopover.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/FloatingButton.d.ts +0 -9
- package/lib/typescript/src/components/SessionRecorderWidget/FloatingButton.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/InitialPopover.d.ts +0 -17
- package/lib/typescript/src/components/SessionRecorderWidget/InitialPopover.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/ModalContainer.d.ts +0 -9
- package/lib/typescript/src/components/SessionRecorderWidget/ModalContainer.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/ModalHeader.d.ts +0 -7
- package/lib/typescript/src/components/SessionRecorderWidget/ModalHeader.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/SessionRecorderWidget.d.ts +0 -6
- package/lib/typescript/src/components/SessionRecorderWidget/SessionRecorderWidget.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/icons.d.ts +0 -12
- package/lib/typescript/src/components/SessionRecorderWidget/icons.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts +0 -3
- package/lib/typescript/src/components/SessionRecorderWidget/index.d.ts.map +0 -1
- package/lib/typescript/src/components/SessionRecorderWidget/styles.d.ts +0 -166
- package/lib/typescript/src/components/SessionRecorderWidget/styles.d.ts.map +0 -1
- package/lib/typescript/src/components/index.d.ts +0 -4
- package/lib/typescript/src/components/index.d.ts.map +0 -1
- package/lib/typescript/src/config/constants.d.ts +0 -22
- package/lib/typescript/src/config/constants.d.ts.map +0 -1
- package/lib/typescript/src/config/defaults.d.ts +0 -5
- package/lib/typescript/src/config/defaults.d.ts.map +0 -1
- package/lib/typescript/src/config/index.d.ts +0 -6
- package/lib/typescript/src/config/index.d.ts.map +0 -1
- package/lib/typescript/src/config/masking.d.ts +0 -3
- package/lib/typescript/src/config/masking.d.ts.map +0 -1
- package/lib/typescript/src/config/session-recorder.d.ts +0 -3
- package/lib/typescript/src/config/session-recorder.d.ts.map +0 -1
- package/lib/typescript/src/config/validators.d.ts +0 -11
- package/lib/typescript/src/config/validators.d.ts.map +0 -1
- package/lib/typescript/src/config/widget.d.ts +0 -10
- package/lib/typescript/src/config/widget.d.ts.map +0 -1
- package/lib/typescript/src/context/SessionRecorderContext.d.ts +0 -22
- package/lib/typescript/src/context/SessionRecorderContext.d.ts.map +0 -1
- package/lib/typescript/src/context/SessionRecorderStore.d.ts +0 -13
- package/lib/typescript/src/context/SessionRecorderStore.d.ts.map +0 -1
- package/lib/typescript/src/context/createStore.d.ts +0 -9
- package/lib/typescript/src/context/createStore.d.ts.map +0 -1
- package/lib/typescript/src/context/useSessionRecorderStore.d.ts +0 -29
- package/lib/typescript/src/context/useSessionRecorderStore.d.ts.map +0 -1
- package/lib/typescript/src/context/useStoreSelector.d.ts +0 -5
- package/lib/typescript/src/context/useStoreSelector.d.ts.map +0 -1
- package/lib/typescript/src/index.d.ts +0 -9
- package/lib/typescript/src/index.d.ts.map +0 -1
- package/lib/typescript/src/native/SessionRecorderNative.d.ts +0 -29
- package/lib/typescript/src/native/SessionRecorderNative.d.ts.map +0 -1
- package/lib/typescript/src/native/index.d.ts +0 -2
- package/lib/typescript/src/native/index.d.ts.map +0 -1
- package/lib/typescript/src/otel/CrashBufferSpanProcessor.d.ts +0 -17
- package/lib/typescript/src/otel/CrashBufferSpanProcessor.d.ts.map +0 -1
- package/lib/typescript/src/otel/helpers.d.ts +0 -46
- package/lib/typescript/src/otel/helpers.d.ts.map +0 -1
- package/lib/typescript/src/otel/index.d.ts +0 -33
- package/lib/typescript/src/otel/index.d.ts.map +0 -1
- package/lib/typescript/src/otel/instrumentations/index.d.ts +0 -5
- package/lib/typescript/src/otel/instrumentations/index.d.ts.map +0 -1
- package/lib/typescript/src/patch/configs.d.ts +0 -9
- package/lib/typescript/src/patch/configs.d.ts.map +0 -1
- package/lib/typescript/src/patch/fetch.d.ts +0 -2
- package/lib/typescript/src/patch/fetch.d.ts.map +0 -1
- package/lib/typescript/src/patch/index.d.ts +0 -4
- package/lib/typescript/src/patch/index.d.ts.map +0 -1
- package/lib/typescript/src/patch/xhr.d.ts +0 -2
- package/lib/typescript/src/patch/xhr.d.ts.map +0 -1
- package/lib/typescript/src/recorder/gestureRecorder.d.ts +0 -66
- package/lib/typescript/src/recorder/gestureRecorder.d.ts.map +0 -1
- package/lib/typescript/src/recorder/index.d.ts +0 -79
- package/lib/typescript/src/recorder/index.d.ts.map +0 -1
- package/lib/typescript/src/recorder/navigationRecorder.d.ts +0 -29
- package/lib/typescript/src/recorder/navigationRecorder.d.ts.map +0 -1
- package/lib/typescript/src/recorder/screenRecorder.d.ts +0 -127
- package/lib/typescript/src/recorder/screenRecorder.d.ts.map +0 -1
- package/lib/typescript/src/services/api.service.d.ts +0 -116
- package/lib/typescript/src/services/api.service.d.ts.map +0 -1
- package/lib/typescript/src/services/crashBuffer.service.d.ts +0 -27
- package/lib/typescript/src/services/crashBuffer.service.d.ts.map +0 -1
- package/lib/typescript/src/services/network.service.d.ts +0 -47
- package/lib/typescript/src/services/network.service.d.ts.map +0 -1
- package/lib/typescript/src/services/screenRecordingService.d.ts +0 -48
- package/lib/typescript/src/services/screenRecordingService.d.ts.map +0 -1
- package/lib/typescript/src/services/socket.service.d.ts +0 -44
- package/lib/typescript/src/services/socket.service.d.ts.map +0 -1
- package/lib/typescript/src/services/storage.service.d.ts +0 -47
- package/lib/typescript/src/services/storage.service.d.ts.map +0 -1
- package/lib/typescript/src/session-recorder.d.ts +0 -191
- package/lib/typescript/src/session-recorder.d.ts.map +0 -1
- package/lib/typescript/src/types/configs.d.ts +0 -92
- package/lib/typescript/src/types/configs.d.ts.map +0 -1
- package/lib/typescript/src/types/index.d.ts +0 -21
- package/lib/typescript/src/types/index.d.ts.map +0 -1
- package/lib/typescript/src/types/session-recorder.d.ts +0 -367
- package/lib/typescript/src/types/session-recorder.d.ts.map +0 -1
- package/lib/typescript/src/utils/app-metadata.d.ts +0 -17
- package/lib/typescript/src/utils/app-metadata.d.ts.map +0 -1
- package/lib/typescript/src/utils/constants.optional.d.ts +0 -22
- package/lib/typescript/src/utils/constants.optional.d.ts.map +0 -1
- package/lib/typescript/src/utils/constants.optional.expo.d.ts +0 -4
- package/lib/typescript/src/utils/constants.optional.expo.d.ts.map +0 -1
- package/lib/typescript/src/utils/index.d.ts +0 -8
- package/lib/typescript/src/utils/index.d.ts.map +0 -1
- package/lib/typescript/src/utils/logger.d.ts +0 -108
- package/lib/typescript/src/utils/logger.d.ts.map +0 -1
- package/lib/typescript/src/utils/platform.d.ts +0 -58
- package/lib/typescript/src/utils/platform.d.ts.map +0 -1
- package/lib/typescript/src/utils/request-utils.d.ts +0 -22
- package/lib/typescript/src/utils/request-utils.d.ts.map +0 -1
- package/lib/typescript/src/utils/rrweb-events.d.ts +0 -67
- package/lib/typescript/src/utils/rrweb-events.d.ts.map +0 -1
- package/lib/typescript/src/utils/session.d.ts +0 -7
- package/lib/typescript/src/utils/session.d.ts.map +0 -1
- package/lib/typescript/src/utils/shallowEqual.d.ts +0 -2
- package/lib/typescript/src/utils/shallowEqual.d.ts.map +0 -1
- package/lib/typescript/src/utils/time.d.ts +0 -5
- package/lib/typescript/src/utils/time.d.ts.map +0 -1
- package/lib/typescript/src/utils/type-utils.d.ts +0 -17
- package/lib/typescript/src/utils/type-utils.d.ts.map +0 -1
- package/lib/typescript/src/version.d.ts +0 -2
- package/lib/typescript/src/version.d.ts.map +0 -1
package/lib/module/otel/index.js
DELETED
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { resourceFromAttributes } from '@opentelemetry/resources';
|
|
4
|
-
import { W3CTraceContextPropagator } from '@opentelemetry/core';
|
|
5
|
-
import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
|
|
6
|
-
import * as SemanticAttributes from '@opentelemetry/semantic-conventions';
|
|
7
|
-
import { registerInstrumentations } from '@opentelemetry/instrumentation';
|
|
8
|
-
import { SessionType, SessionRecorderSdk, SessionRecorderIdGenerator, SessionRecorderBrowserTraceExporter, ATTR_MULTIPLAYER_SESSION_ID, MULTIPLAYER_TRACE_CLIENT_ID_LENGTH, SessionRecorderTraceIdRatioBasedSampler } from '@multiplayer-app/session-recorder-common';
|
|
9
|
-
import { getInstrumentations } from "./instrumentations/index.js";
|
|
10
|
-
import { getExporterEndpoint } from "./helpers.js";
|
|
11
|
-
import { getPlatformAttributes } from "../utils/platform.js";
|
|
12
|
-
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
|
|
13
|
-
import { CrashBufferSpanProcessor } from "./CrashBufferSpanProcessor.js";
|
|
14
|
-
const clientIdGenerator = SessionRecorderSdk.getIdGenerator(MULTIPLAYER_TRACE_CLIENT_ID_LENGTH);
|
|
15
|
-
export class TracerReactNativeSDK {
|
|
16
|
-
clientId = '';
|
|
17
|
-
sessionId = '';
|
|
18
|
-
globalErrorHandlerRegistered = false;
|
|
19
|
-
constructor() {}
|
|
20
|
-
_setSessionId(sessionId, sessionType = SessionType.MANUAL) {
|
|
21
|
-
this.sessionId = sessionId;
|
|
22
|
-
if (!this.idGenerator) {
|
|
23
|
-
throw new Error('Id generator not initialized');
|
|
24
|
-
}
|
|
25
|
-
this.idGenerator.setSessionId(sessionId, sessionType, this.clientId);
|
|
26
|
-
}
|
|
27
|
-
init(options) {
|
|
28
|
-
this.config = options;
|
|
29
|
-
this.clientId = clientIdGenerator();
|
|
30
|
-
const {
|
|
31
|
-
application,
|
|
32
|
-
version,
|
|
33
|
-
environment
|
|
34
|
-
} = this.config;
|
|
35
|
-
this.idGenerator = new SessionRecorderIdGenerator();
|
|
36
|
-
this._setSessionId('', SessionType.SESSION_CACHE);
|
|
37
|
-
this.exporter = new SessionRecorderBrowserTraceExporter({
|
|
38
|
-
apiKey: options.apiKey,
|
|
39
|
-
url: getExporterEndpoint(options.exporterEndpoint)
|
|
40
|
-
});
|
|
41
|
-
const resourceAttributes = resourceFromAttributes({
|
|
42
|
-
[SemanticAttributes.SEMRESATTRS_SERVICE_NAME]: application,
|
|
43
|
-
[SemanticAttributes.SEMRESATTRS_SERVICE_VERSION]: version,
|
|
44
|
-
[SemanticAttributes.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: environment,
|
|
45
|
-
...getPlatformAttributes()
|
|
46
|
-
});
|
|
47
|
-
SessionRecorderSdk.setResourceAttributes(resourceAttributes.attributes);
|
|
48
|
-
this.tracerProvider = new WebTracerProvider({
|
|
49
|
-
resource: resourceAttributes,
|
|
50
|
-
idGenerator: this.idGenerator,
|
|
51
|
-
sampler: new SessionRecorderTraceIdRatioBasedSampler(this.config.sampleTraceRatio),
|
|
52
|
-
spanProcessors: [this._getSpanSessionIdProcessor(), new BatchSpanProcessor(this.exporter), new CrashBufferSpanProcessor(this.crashBuffer, this.exporter.serializeSpan)]
|
|
53
|
-
});
|
|
54
|
-
this.tracerProvider.register({
|
|
55
|
-
propagator: new W3CTraceContextPropagator()
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
// Register instrumentations
|
|
59
|
-
registerInstrumentations({
|
|
60
|
-
tracerProvider: this.tracerProvider,
|
|
61
|
-
instrumentations: getInstrumentations(this.config)
|
|
62
|
-
});
|
|
63
|
-
this._registerGlobalErrorHandlers();
|
|
64
|
-
}
|
|
65
|
-
setCrashBuffer(crashBuffer, windowMs) {
|
|
66
|
-
this.crashBuffer = crashBuffer;
|
|
67
|
-
if (crashBuffer && typeof windowMs === 'number' && Number.isFinite(windowMs)) {
|
|
68
|
-
crashBuffer.setDefaultWindowMs(windowMs);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
async exportTraces(spans) {
|
|
72
|
-
if (!this.exporter) {
|
|
73
|
-
throw new Error('Trace exporter not initialized');
|
|
74
|
-
}
|
|
75
|
-
if (!spans || spans.length === 0) {
|
|
76
|
-
return Promise.resolve();
|
|
77
|
-
}
|
|
78
|
-
const readableSpans = spans.map(s => TracerReactNativeSDK._toReadableSpanLike(s));
|
|
79
|
-
return new Promise(resolve => {
|
|
80
|
-
this.exporter?.exportBuffer(readableSpans, result => {
|
|
81
|
-
resolve(result);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
start(sessionId, sessionType) {
|
|
86
|
-
if (!this.tracerProvider) {
|
|
87
|
-
throw new Error('Configuration not initialized. Call init() before start().');
|
|
88
|
-
}
|
|
89
|
-
this._setSessionId(sessionId, sessionType);
|
|
90
|
-
}
|
|
91
|
-
stop() {
|
|
92
|
-
if (!this.tracerProvider) {
|
|
93
|
-
throw new Error('Configuration not initialized. Call init() before start().');
|
|
94
|
-
}
|
|
95
|
-
this._setSessionId('', SessionType.SESSION_CACHE);
|
|
96
|
-
}
|
|
97
|
-
setApiKey(apiKey) {
|
|
98
|
-
if (!this.exporter) {
|
|
99
|
-
throw new Error('Configuration not initialized. Call init() before setApiKey().');
|
|
100
|
-
}
|
|
101
|
-
this.exporter.setApiKey(apiKey);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Capture an exception as an error span/event.
|
|
106
|
-
* If there is an active span, the exception will be recorded on it.
|
|
107
|
-
* Otherwise, a short-lived span will be created to hold the exception event.
|
|
108
|
-
*/
|
|
109
|
-
captureException(error, errorInfo) {
|
|
110
|
-
if (!error) return;
|
|
111
|
-
SessionRecorderSdk.captureException(error, errorInfo);
|
|
112
|
-
}
|
|
113
|
-
_getSpanSessionIdProcessor() {
|
|
114
|
-
return {
|
|
115
|
-
onStart: span => {
|
|
116
|
-
if (this.sessionId) {
|
|
117
|
-
span.setAttribute(ATTR_MULTIPLAYER_SESSION_ID, this.sessionId);
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
onEnd: () => {},
|
|
121
|
-
shutdown: () => Promise.resolve(),
|
|
122
|
-
forceFlush: () => Promise.resolve()
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
_registerGlobalErrorHandlers() {
|
|
126
|
-
if (this.globalErrorHandlerRegistered) return;
|
|
127
|
-
|
|
128
|
-
// React Native global error handler
|
|
129
|
-
|
|
130
|
-
const ErrorUtilsRef = global.ErrorUtils;
|
|
131
|
-
if (ErrorUtilsRef && typeof ErrorUtilsRef.setGlobalHandler === 'function') {
|
|
132
|
-
const previous = ErrorUtilsRef.getGlobalHandler?.();
|
|
133
|
-
ErrorUtilsRef.setGlobalHandler((error, isFatal) => {
|
|
134
|
-
try {
|
|
135
|
-
const err = error instanceof Error ? error : new Error(String(error?.message || error));
|
|
136
|
-
this.captureException(err);
|
|
137
|
-
} finally {
|
|
138
|
-
if (typeof previous === 'function') {
|
|
139
|
-
try {
|
|
140
|
-
previous(error, isFatal);
|
|
141
|
-
} catch (_e) {
|
|
142
|
-
/* ignore */
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
this.globalErrorHandlerRegistered = true;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
static _toReadableSpanLike(span) {
|
|
151
|
-
if (span && typeof span.spanContext === 'function' && span.instrumentationScope) {
|
|
152
|
-
return span;
|
|
153
|
-
}
|
|
154
|
-
const spanContext = typeof span?.spanContext === 'function' ? span.spanContext() : span?._spanContext;
|
|
155
|
-
const normalizedCtx = spanContext || {
|
|
156
|
-
traceId: span?.traceId,
|
|
157
|
-
spanId: span?.spanId,
|
|
158
|
-
traceFlags: span?.traceFlags,
|
|
159
|
-
traceState: span?.traceState
|
|
160
|
-
};
|
|
161
|
-
const instrumentationScope = span?.instrumentationScope || span?.instrumentationLibrary || {
|
|
162
|
-
name: 'multiplayer-buffer',
|
|
163
|
-
version: undefined,
|
|
164
|
-
schemaUrl: undefined
|
|
165
|
-
};
|
|
166
|
-
const normalizedScope = {
|
|
167
|
-
name: instrumentationScope?.name || 'multiplayer-buffer',
|
|
168
|
-
version: instrumentationScope?.version,
|
|
169
|
-
schemaUrl: instrumentationScope?.schemaUrl
|
|
170
|
-
};
|
|
171
|
-
const resource = span?.resource || {
|
|
172
|
-
attributes: {},
|
|
173
|
-
asyncAttributesPending: false
|
|
174
|
-
};
|
|
175
|
-
const parentSpanId = span?.parentSpanId;
|
|
176
|
-
return {
|
|
177
|
-
name: span?.name || '',
|
|
178
|
-
kind: span?.kind,
|
|
179
|
-
spanContext: () => normalizedCtx,
|
|
180
|
-
parentSpanContext: parentSpanId ? {
|
|
181
|
-
traceId: normalizedCtx?.traceId,
|
|
182
|
-
spanId: parentSpanId,
|
|
183
|
-
traceFlags: normalizedCtx?.traceFlags,
|
|
184
|
-
traceState: normalizedCtx?.traceState
|
|
185
|
-
} : undefined,
|
|
186
|
-
startTime: span?.startTime,
|
|
187
|
-
endTime: span?.endTime ?? span?.startTime,
|
|
188
|
-
duration: span?.duration,
|
|
189
|
-
status: span?.status,
|
|
190
|
-
attributes: span?.attributes || {},
|
|
191
|
-
links: span?.links || [],
|
|
192
|
-
events: span?.events || [],
|
|
193
|
-
ended: typeof span?.ended === 'boolean' ? span.ended : true,
|
|
194
|
-
droppedAttributesCount: span?.droppedAttributesCount || 0,
|
|
195
|
-
droppedEventsCount: span?.droppedEventsCount || 0,
|
|
196
|
-
droppedLinksCount: span?.droppedLinksCount || 0,
|
|
197
|
-
resource,
|
|
198
|
-
instrumentationScope: normalizedScope
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["resourceFromAttributes","W3CTraceContextPropagator","BatchSpanProcessor","SemanticAttributes","registerInstrumentations","SessionType","SessionRecorderSdk","SessionRecorderIdGenerator","SessionRecorderBrowserTraceExporter","ATTR_MULTIPLAYER_SESSION_ID","MULTIPLAYER_TRACE_CLIENT_ID_LENGTH","SessionRecorderTraceIdRatioBasedSampler","getInstrumentations","getExporterEndpoint","getPlatformAttributes","WebTracerProvider","CrashBufferSpanProcessor","clientIdGenerator","getIdGenerator","TracerReactNativeSDK","clientId","sessionId","globalErrorHandlerRegistered","constructor","_setSessionId","sessionType","MANUAL","idGenerator","Error","setSessionId","init","options","config","application","version","environment","SESSION_CACHE","exporter","apiKey","url","exporterEndpoint","resourceAttributes","SEMRESATTRS_SERVICE_NAME","SEMRESATTRS_SERVICE_VERSION","SEMRESATTRS_DEPLOYMENT_ENVIRONMENT","setResourceAttributes","attributes","tracerProvider","resource","sampler","sampleTraceRatio","spanProcessors","_getSpanSessionIdProcessor","crashBuffer","serializeSpan","register","propagator","instrumentations","_registerGlobalErrorHandlers","setCrashBuffer","windowMs","Number","isFinite","setDefaultWindowMs","exportTraces","spans","length","Promise","resolve","readableSpans","map","s","_toReadableSpanLike","exportBuffer","result","start","stop","setApiKey","captureException","error","errorInfo","onStart","span","setAttribute","onEnd","shutdown","forceFlush","ErrorUtilsRef","global","ErrorUtils","setGlobalHandler","previous","getGlobalHandler","isFatal","err","String","message","_e","spanContext","instrumentationScope","_spanContext","normalizedCtx","traceId","spanId","traceFlags","traceState","instrumentationLibrary","name","undefined","schemaUrl","normalizedScope","asyncAttributesPending","parentSpanId","kind","parentSpanContext","startTime","endTime","duration","status","links","events","ended","droppedAttributesCount","droppedEventsCount","droppedLinksCount"],"sourceRoot":"../../../src","sources":["otel/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';
|
|
4
|
-
import { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';
|
|
5
|
-
import { logger } from "../../utils/index.js";
|
|
6
|
-
import { OTEL_IGNORE_URLS } from "../../config/index.js";
|
|
7
|
-
import { extractResponseBody, headersToObject, processHttpPayload } from "../helpers.js";
|
|
8
|
-
export function getInstrumentations(config) {
|
|
9
|
-
const instrumentations = [];
|
|
10
|
-
|
|
11
|
-
// Fetch instrumentation
|
|
12
|
-
try {
|
|
13
|
-
instrumentations.push(new FetchInstrumentation({
|
|
14
|
-
clearTimingResources: false,
|
|
15
|
-
ignoreUrls: [...OTEL_IGNORE_URLS, ...(config.ignoreUrls || [])],
|
|
16
|
-
propagateTraceHeaderCorsUrls: config.propagateTraceHeaderCorsUrls,
|
|
17
|
-
applyCustomAttributesOnSpan: async (span, request, response) => {
|
|
18
|
-
if (!config) return;
|
|
19
|
-
const {
|
|
20
|
-
captureBody,
|
|
21
|
-
captureHeaders
|
|
22
|
-
} = config;
|
|
23
|
-
try {
|
|
24
|
-
if (!captureBody && !captureHeaders) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Try to get data from our fetch wrapper first
|
|
29
|
-
// @ts-ignore
|
|
30
|
-
const networkRequest = response?.networkRequest;
|
|
31
|
-
let requestBody = null;
|
|
32
|
-
let responseBody = null;
|
|
33
|
-
let requestHeaders = {};
|
|
34
|
-
let responseHeaders = {};
|
|
35
|
-
if (networkRequest) {
|
|
36
|
-
// Use data captured by our fetch wrapper
|
|
37
|
-
requestBody = networkRequest.requestBody;
|
|
38
|
-
responseBody = networkRequest.responseBody;
|
|
39
|
-
requestHeaders = networkRequest.requestHeaders || {};
|
|
40
|
-
responseHeaders = networkRequest.responseHeaders || {};
|
|
41
|
-
} else {
|
|
42
|
-
// Fallback to original OpenTelemetry approach
|
|
43
|
-
requestBody = request.body;
|
|
44
|
-
requestHeaders = headersToObject(request.headers);
|
|
45
|
-
responseHeaders = headersToObject(response instanceof Response ? response.headers : undefined);
|
|
46
|
-
if (response instanceof Response && response.body) {
|
|
47
|
-
responseBody = await extractResponseBody(response);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
const payload = {
|
|
51
|
-
requestBody,
|
|
52
|
-
responseBody,
|
|
53
|
-
requestHeaders,
|
|
54
|
-
responseHeaders
|
|
55
|
-
};
|
|
56
|
-
processHttpPayload(payload, config, span);
|
|
57
|
-
} catch (error) {
|
|
58
|
-
// eslint-disable-next-line
|
|
59
|
-
logger.error('DEBUGGER_LIB', 'Failed to capture fetch payload', error);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}));
|
|
63
|
-
} catch (error) {
|
|
64
|
-
logger.warn('DEBUGGER_LIB', 'Fetch instrumentation not available', error);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// XMLHttpRequest instrumentation
|
|
68
|
-
try {
|
|
69
|
-
instrumentations.push(new XMLHttpRequestInstrumentation({
|
|
70
|
-
clearTimingResources: false,
|
|
71
|
-
ignoreUrls: [...OTEL_IGNORE_URLS, ...(config.ignoreUrls || [])],
|
|
72
|
-
propagateTraceHeaderCorsUrls: config.propagateTraceHeaderCorsUrls,
|
|
73
|
-
applyCustomAttributesOnSpan: (span, xhr) => {
|
|
74
|
-
if (!config) return;
|
|
75
|
-
const {
|
|
76
|
-
captureBody,
|
|
77
|
-
captureHeaders
|
|
78
|
-
} = config;
|
|
79
|
-
try {
|
|
80
|
-
if (!captureBody && !captureHeaders) {
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// @ts-ignore
|
|
85
|
-
const networkRequest = xhr.networkRequest;
|
|
86
|
-
let requestBody = null;
|
|
87
|
-
let responseBody = null;
|
|
88
|
-
let requestHeaders = {};
|
|
89
|
-
let responseHeaders = {};
|
|
90
|
-
if (networkRequest) {
|
|
91
|
-
requestBody = networkRequest.requestBody;
|
|
92
|
-
responseBody = networkRequest.responseBody;
|
|
93
|
-
requestHeaders = networkRequest.requestHeaders || {};
|
|
94
|
-
responseHeaders = networkRequest.responseHeaders || {};
|
|
95
|
-
}
|
|
96
|
-
const payload = {
|
|
97
|
-
requestBody,
|
|
98
|
-
responseBody,
|
|
99
|
-
requestHeaders,
|
|
100
|
-
responseHeaders
|
|
101
|
-
};
|
|
102
|
-
processHttpPayload(payload, config, span);
|
|
103
|
-
} catch (error) {
|
|
104
|
-
// eslint-disable-next-line
|
|
105
|
-
logger.error('DEBUGGER_LIB', 'Failed to capture xml-http payload', error);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}));
|
|
109
|
-
} catch (error) {
|
|
110
|
-
logger.warn('DEBUGGER_LIB', 'XMLHttpRequest instrumentation not available', error);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
// Custom React Native instrumentations
|
|
114
|
-
// try {
|
|
115
|
-
// instrumentations.push(new ReactNativeInstrumentation())
|
|
116
|
-
// } catch (error) {
|
|
117
|
-
// console.warn('React Native instrumentation not available:', error)
|
|
118
|
-
// }
|
|
119
|
-
|
|
120
|
-
return instrumentations;
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["FetchInstrumentation","XMLHttpRequestInstrumentation","logger","OTEL_IGNORE_URLS","extractResponseBody","headersToObject","processHttpPayload","getInstrumentations","config","instrumentations","push","clearTimingResources","ignoreUrls","propagateTraceHeaderCorsUrls","applyCustomAttributesOnSpan","span","request","response","captureBody","captureHeaders","networkRequest","requestBody","responseBody","requestHeaders","responseHeaders","body","headers","Response","undefined","payload","error","warn","xhr"],"sourceRoot":"../../../../src","sources":["otel/instrumentations/index.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/package.json
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"type":"module"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE } from "../config/index.js";
|
|
4
|
-
export const configs = {
|
|
5
|
-
recordRequestHeaders: true,
|
|
6
|
-
recordResponseHeaders: true,
|
|
7
|
-
shouldRecordBody: true,
|
|
8
|
-
maxCapturingHttpPayloadSize: DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE
|
|
9
|
-
};
|
|
10
|
-
export const setMaxCapturingHttpPayloadSize = _maxCapturingHttpPayloadSize => {
|
|
11
|
-
configs.maxCapturingHttpPayloadSize = _maxCapturingHttpPayloadSize;
|
|
12
|
-
};
|
|
13
|
-
export const setShouldRecordHttpData = (shouldRecordBody, shouldRecordHeaders) => {
|
|
14
|
-
configs.recordRequestHeaders = shouldRecordHeaders;
|
|
15
|
-
configs.recordResponseHeaders = shouldRecordHeaders;
|
|
16
|
-
configs.shouldRecordBody = shouldRecordBody;
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=configs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_MAX_HTTP_CAPTURING_PAYLOAD_SIZE","configs","recordRequestHeaders","recordResponseHeaders","shouldRecordBody","maxCapturingHttpPayloadSize","setMaxCapturingHttpPayloadSize","_maxCapturingHttpPayloadSize","setShouldRecordHttpData","shouldRecordHeaders"],"sourceRoot":"../../../src","sources":["patch/configs.ts"],"mappings":";;AAAA,SAASA,uCAAuC,QAAQ,oBAAW;AAEnE,OAAO,MAAMC,OAAO,GAAG;EACrBC,oBAAoB,EAAE,IAAI;EAC1BC,qBAAqB,EAAE,IAAI;EAC3BC,gBAAgB,EAAE,IAAI;EACtBC,2BAA2B,EAAEL;AAC/B,CAAC;AAED,OAAO,MAAMM,8BAA8B,GACzCC,4BAAoC,IACjC;EACHN,OAAO,CAACI,2BAA2B,GAAGE,4BAA4B;AACpE,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAAGA,CACrCJ,gBAAyB,EACzBK,mBAA4B,KACzB;EACHR,OAAO,CAACC,oBAAoB,GAAGO,mBAAmB;EAClDR,OAAO,CAACE,qBAAqB,GAAGM,mBAAmB;EACnDR,OAAO,CAACG,gBAAgB,GAAGA,gBAAgB;AAC7C,CAAC","ignoreList":[]}
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { isFormData, isNullish, isObject, isString } from "../utils/type-utils.js";
|
|
4
|
-
import { formDataToQuery } from "../utils/request-utils.js";
|
|
5
|
-
import { configs } from "./configs.js";
|
|
6
|
-
function _tryReadFetchBody({
|
|
7
|
-
body
|
|
8
|
-
}) {
|
|
9
|
-
if (isNullish(body)) {
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
if (isString(body)) {
|
|
13
|
-
return body;
|
|
14
|
-
}
|
|
15
|
-
if (isFormData(body)) {
|
|
16
|
-
return formDataToQuery(body);
|
|
17
|
-
}
|
|
18
|
-
if (isObject(body)) {
|
|
19
|
-
try {
|
|
20
|
-
return JSON.stringify(body);
|
|
21
|
-
} catch {
|
|
22
|
-
return '[Fetch] Failed to stringify request object';
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return `[Fetch] Cannot read body of type ${Object.prototype.toString.call(body)}`;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Detects if a response is a streaming response that should NOT have its body read.
|
|
30
|
-
* Reading the body of streaming responses (SSE, chunked streams, etc.) will either:
|
|
31
|
-
* - Block forever (SSE streams never end)
|
|
32
|
-
* - Corrupt the stream for the actual consumer
|
|
33
|
-
*/
|
|
34
|
-
function _isStreamingResponse(response) {
|
|
35
|
-
const contentType = response.headers.get('content-type')?.toLowerCase() ?? '';
|
|
36
|
-
|
|
37
|
-
// SSE - Server-Sent Events (infinite stream)
|
|
38
|
-
if (contentType.includes('text/event-stream')) {
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Binary streams that are typically long-running
|
|
43
|
-
if (contentType.includes('application/octet-stream')) {
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// NDJSON streaming (newline-delimited JSON, common in streaming APIs)
|
|
48
|
-
if (contentType.includes('application/x-ndjson') || contentType.includes('application/ndjson')) {
|
|
49
|
-
return true;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// gRPC-web streaming
|
|
53
|
-
if (contentType.includes('application/grpc')) {
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Check for chunked transfer encoding (often indicates streaming)
|
|
58
|
-
const transferEncoding = response.headers.get('transfer-encoding')?.toLowerCase();
|
|
59
|
-
if (transferEncoding?.includes('chunked')) {
|
|
60
|
-
// Chunked alone isn't definitive, but combined with no content-length = streaming
|
|
61
|
-
const contentLength = response.headers.get('content-length');
|
|
62
|
-
if (!contentLength) {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Safely reads response body for non-streaming responses.
|
|
71
|
-
* Returns null for streaming responses to avoid blocking/corruption.
|
|
72
|
-
*/
|
|
73
|
-
async function _tryReadResponseBody(response) {
|
|
74
|
-
// CRITICAL: Never attempt to read streaming response bodies
|
|
75
|
-
if (_isStreamingResponse(response)) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
try {
|
|
79
|
-
// Clone the response to avoid consuming the original stream.
|
|
80
|
-
const clonedResponse = response.clone();
|
|
81
|
-
const contentType = response.headers.get('content-type')?.toLowerCase() ?? '';
|
|
82
|
-
|
|
83
|
-
// Check content-length to avoid reading massive responses
|
|
84
|
-
const contentLength = response.headers.get('content-length');
|
|
85
|
-
if (contentLength) {
|
|
86
|
-
const length = parseInt(contentLength, 10);
|
|
87
|
-
if (!isNaN(length) && length > configs.maxCapturingHttpPayloadSize) {
|
|
88
|
-
return `[Fetch] Response too large (${length} bytes)`;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (contentType.includes('application/json')) {
|
|
92
|
-
const json = await clonedResponse.json();
|
|
93
|
-
return JSON.stringify(json);
|
|
94
|
-
}
|
|
95
|
-
if (contentType.includes('text/')) {
|
|
96
|
-
return await clonedResponse.text();
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// For unknown types, attempt text read
|
|
100
|
-
try {
|
|
101
|
-
return await clonedResponse.text();
|
|
102
|
-
} catch {
|
|
103
|
-
try {
|
|
104
|
-
const arrayBuffer = await clonedResponse.arrayBuffer();
|
|
105
|
-
return `[Fetch] Binary data (${arrayBuffer.byteLength} bytes)`;
|
|
106
|
-
} catch {
|
|
107
|
-
return '[Fetch] Unable to read response body';
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
} catch (error) {
|
|
111
|
-
return `[Fetch] Error reading response body: ${error instanceof Error ? error.message : 'Unknown error'}`;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function _headersToObject(headers) {
|
|
115
|
-
const result = {};
|
|
116
|
-
headers.forEach((value, key) => {
|
|
117
|
-
result[key] = value;
|
|
118
|
-
});
|
|
119
|
-
return result;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Convert HeadersInit to a plain object without needing to construct a Request
|
|
123
|
-
function _headersInitToObject(headersInit) {
|
|
124
|
-
if (!headersInit) return {};
|
|
125
|
-
|
|
126
|
-
// Headers instance
|
|
127
|
-
if (typeof Headers !== 'undefined' && headersInit instanceof Headers) {
|
|
128
|
-
return _headersToObject(headersInit);
|
|
129
|
-
}
|
|
130
|
-
const result = {};
|
|
131
|
-
|
|
132
|
-
// Array of tuples
|
|
133
|
-
if (Array.isArray(headersInit)) {
|
|
134
|
-
for (const [key, value] of headersInit) {
|
|
135
|
-
result[String(key).toLowerCase()] = String(value);
|
|
136
|
-
}
|
|
137
|
-
return result;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Record<string, string>
|
|
141
|
-
for (const [key, value] of Object.entries(headersInit)) {
|
|
142
|
-
result[String(key).toLowerCase()] = String(value);
|
|
143
|
-
}
|
|
144
|
-
return result;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Only patch fetch if available and safe to do so
|
|
148
|
-
if (typeof fetch !== 'undefined' && typeof global !== 'undefined') {
|
|
149
|
-
// Store original fetch
|
|
150
|
-
const originalFetch = global.fetch;
|
|
151
|
-
|
|
152
|
-
// Override fetch with safer implementation
|
|
153
|
-
global.fetch = async function (input, init) {
|
|
154
|
-
const networkRequest = {};
|
|
155
|
-
|
|
156
|
-
// Capture request data
|
|
157
|
-
const inputIsRequest = typeof Request !== 'undefined' && input instanceof Request;
|
|
158
|
-
if (configs.recordRequestHeaders) {
|
|
159
|
-
if (inputIsRequest) {
|
|
160
|
-
networkRequest.requestHeaders = _headersToObject(input.headers);
|
|
161
|
-
} else {
|
|
162
|
-
networkRequest.requestHeaders = _headersInitToObject(init?.headers);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
if (configs.shouldRecordBody) {
|
|
166
|
-
// Only attempt to read the body from init (safe); avoid constructing/cloning Requests
|
|
167
|
-
// If the caller passed a Request as input, we do not attempt to read its body here
|
|
168
|
-
const candidateBody = init?.body;
|
|
169
|
-
if (!isNullish(candidateBody)) {
|
|
170
|
-
const requestBody = _tryReadFetchBody({
|
|
171
|
-
body: candidateBody
|
|
172
|
-
});
|
|
173
|
-
if (requestBody?.length && (typeof Blob !== 'undefined' ? new Blob([requestBody]).size <= configs.maxCapturingHttpPayloadSize : requestBody.length <= configs.maxCapturingHttpPayloadSize)) {
|
|
174
|
-
networkRequest.requestBody = requestBody;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
try {
|
|
179
|
-
// Make the actual fetch request
|
|
180
|
-
const response = await originalFetch(input, init);
|
|
181
|
-
|
|
182
|
-
// Capture response data
|
|
183
|
-
if (configs.recordResponseHeaders) {
|
|
184
|
-
networkRequest.responseHeaders = _headersToObject(response.headers);
|
|
185
|
-
}
|
|
186
|
-
if (configs.shouldRecordBody) {
|
|
187
|
-
const responseBody = await _tryReadResponseBody(response);
|
|
188
|
-
if (responseBody?.length && (typeof Blob !== 'undefined' ? new Blob([responseBody]).size <= configs.maxCapturingHttpPayloadSize : responseBody.length <= configs.maxCapturingHttpPayloadSize)) {
|
|
189
|
-
networkRequest.responseBody = responseBody;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
// @ts-expect-error Attach network request data to the response for later access
|
|
194
|
-
response.networkRequest = networkRequest;
|
|
195
|
-
return response;
|
|
196
|
-
} catch (error) {
|
|
197
|
-
// Even if the fetch fails, we can still capture the request data
|
|
198
|
-
// Attach captured request data to the thrown error for downstream handling
|
|
199
|
-
if (error && typeof error === 'object') {
|
|
200
|
-
// @ts-expect-error
|
|
201
|
-
error.networkRequest = networkRequest;
|
|
202
|
-
}
|
|
203
|
-
throw error;
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
// Preserve the original fetch function's properties
|
|
208
|
-
try {
|
|
209
|
-
Object.setPrototypeOf(global.fetch, originalFetch);
|
|
210
|
-
Object.defineProperty(global.fetch, 'name', {
|
|
211
|
-
value: 'fetch'
|
|
212
|
-
});
|
|
213
|
-
Object.defineProperty(global.fetch, 'length', {
|
|
214
|
-
value: originalFetch.length
|
|
215
|
-
});
|
|
216
|
-
} catch (error) {
|
|
217
|
-
console.warn('[Fetch Patch] Failed to preserve fetch properties:', error);
|
|
218
|
-
}
|
|
219
|
-
} else {
|
|
220
|
-
console.info('Fetch patch: Skipping fetch patching - fetch not available or unsafe environment');
|
|
221
|
-
}
|
|
222
|
-
//# sourceMappingURL=fetch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["isFormData","isNullish","isObject","isString","formDataToQuery","configs","_tryReadFetchBody","body","JSON","stringify","Object","prototype","toString","call","_isStreamingResponse","response","contentType","headers","get","toLowerCase","includes","transferEncoding","contentLength","_tryReadResponseBody","clonedResponse","clone","length","parseInt","isNaN","maxCapturingHttpPayloadSize","json","text","arrayBuffer","byteLength","error","Error","message","_headersToObject","result","forEach","value","key","_headersInitToObject","headersInit","Headers","Array","isArray","String","entries","fetch","global","originalFetch","input","init","networkRequest","inputIsRequest","Request","recordRequestHeaders","requestHeaders","shouldRecordBody","candidateBody","requestBody","Blob","size","recordResponseHeaders","responseHeaders","responseBody","setPrototypeOf","defineProperty","console","warn","info"],"sourceRoot":"../../../src","sources":["patch/fetch.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["patch/index.ts"],"mappings":";;AAAA,OAAO,UAAO;AACd,OAAO,YAAS;AAEhB,cAAc,cAAW","ignoreList":[]}
|