@coralogix/browser 1.2.42 → 1.4.5
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/README.md +76 -0
- package/package.json +1 -1
- package/src/configuration.js +1 -1
- package/src/configuration.js.map +1 -1
- package/src/constants.d.ts +10 -4
- package/src/constants.js +12 -5
- package/src/constants.js.map +1 -1
- package/src/index.d.ts +2 -1
- package/src/index.js +38 -4
- package/src/index.js.map +1 -1
- package/src/instrumentations/CoralogixResourcesInstrumentation.d.ts +1 -0
- package/src/instrumentations/CoralogixResourcesInstrumentation.js +14 -16
- package/src/instrumentations/CoralogixResourcesInstrumentation.js.map +1 -1
- package/src/instrumentations/CoralogixWebVitalsInstrumentation.js +12 -2
- package/src/instrumentations/CoralogixWebVitalsInstrumentation.js.map +1 -1
- package/src/instrumentations/{CoralogixCustomMeasurementInstrumentation.d.ts → custom-measurements/CoralogixCustomMeasurementInstrumentation.d.ts} +2 -2
- package/src/instrumentations/{CoralogixCustomMeasurementInstrumentation.js → custom-measurements/CoralogixCustomMeasurementInstrumentation.js} +7 -4
- package/src/instrumentations/custom-measurements/CoralogixCustomMeasurementInstrumentation.js.map +1 -0
- package/src/instrumentations/custom-measurements/custom-measurements.types.d.ts +5 -0
- package/src/instrumentations/custom-measurements/custom-measurements.types.js +2 -0
- package/src/instrumentations/custom-measurements/custom-measurements.types.js.map +1 -0
- package/src/instrumentations/custom-measurements/index.d.ts +3 -0
- package/src/instrumentations/custom-measurements/index.js +4 -0
- package/src/instrumentations/custom-measurements/index.js.map +1 -0
- package/src/instrumentations/custom-measurements/timeMeasurementTracker.d.ts +9 -0
- package/src/instrumentations/custom-measurements/timeMeasurementTracker.js +38 -0
- package/src/instrumentations/custom-measurements/timeMeasurementTracker.js.map +1 -0
- package/src/instrumentations/memory-usage/CoralogixMemoryUsageInstrumentation.js +10 -6
- package/src/instrumentations/memory-usage/CoralogixMemoryUsageInstrumentation.js.map +1 -1
- package/src/instrumentations/memory-usage/index.d.ts +4 -0
- package/src/instrumentations/memory-usage/index.js +5 -0
- package/src/instrumentations/memory-usage/index.js.map +1 -0
- package/src/instrumentations/memory-usage/memory-usage-constants.d.ts +3 -0
- package/src/instrumentations/memory-usage/memory-usage-constants.js +4 -0
- package/src/instrumentations/memory-usage/memory-usage-constants.js.map +1 -0
- package/src/instrumentations/memory-usage/memory-usage.types.d.ts +25 -0
- package/src/instrumentations/memory-usage/memory-usage.types.js +2 -0
- package/src/instrumentations/memory-usage/memory-usage.types.js.map +1 -0
- package/src/instrumentations/memory-usage/memory-usage.utils.d.ts +2 -3
- package/src/instrumentations/memory-usage/memory-usage.utils.js +21 -3
- package/src/instrumentations/memory-usage/memory-usage.utils.js.map +1 -1
- package/src/instrumentations/{CoralogixFetchInstrumentation.d.ts → network/CoralogixFetchInstrumentation.d.ts} +5 -1
- package/src/instrumentations/network/CoralogixFetchInstrumentation.js +99 -0
- package/src/instrumentations/network/CoralogixFetchInstrumentation.js.map +1 -0
- package/src/instrumentations/{CoralogixXhrInstrumentation.d.ts → network/CoralogixXhrInstrumentation.d.ts} +4 -0
- package/src/instrumentations/network/CoralogixXhrInstrumentation.js +57 -0
- package/src/instrumentations/network/CoralogixXhrInstrumentation.js.map +1 -0
- package/src/instrumentations/network/HeadersManager.d.ts +5 -0
- package/src/instrumentations/network/HeadersManager.js +42 -0
- package/src/instrumentations/network/HeadersManager.js.map +1 -0
- package/src/instrumentations/network/NetworkDataManager.d.ts +11 -0
- package/src/instrumentations/network/NetworkDataManager.js +87 -0
- package/src/instrumentations/network/NetworkDataManager.js.map +1 -0
- package/src/instrumentations/network/constants.d.ts +6 -0
- package/src/instrumentations/network/constants.js +7 -0
- package/src/instrumentations/network/constants.js.map +1 -0
- package/src/instrumentations/screenshot/CoralogixScreenshotInstrumentation.d.ts +8 -0
- package/src/instrumentations/screenshot/CoralogixScreenshotInstrumentation.js +28 -0
- package/src/instrumentations/screenshot/CoralogixScreenshotInstrumentation.js.map +1 -0
- package/src/instrumentations/screenshot/screenshot.utils.d.ts +2 -0
- package/src/instrumentations/screenshot/screenshot.utils.js +3 -0
- package/src/instrumentations/screenshot/screenshot.utils.js.map +1 -0
- package/src/processors/CoralogixSnapshotSpanProcessor.js +3 -0
- package/src/processors/CoralogixSnapshotSpanProcessor.js.map +1 -1
- package/src/processors/CoralogixSpanMapProcessor.js +19 -6
- package/src/processors/CoralogixSpanMapProcessor.js.map +1 -1
- package/src/session/session.model.d.ts +3 -1
- package/src/session/sessionManager.js +4 -4
- package/src/session/sessionManager.js.map +1 -1
- package/src/session/sessionRecorder.d.ts +4 -0
- package/src/session/sessionRecorder.js +57 -29
- package/src/session/sessionRecorder.js.map +1 -1
- package/src/snapshot/snapshot.consts.js +1 -0
- package/src/snapshot/snapshot.consts.js.map +1 -1
- package/src/snapshot/snapshot.model.d.ts +1 -0
- package/src/types.d.ts +42 -7
- package/src/types.js +1 -0
- package/src/types.js.map +1 -1
- package/src/utils/all.js +5 -6
- package/src/utils/all.js.map +1 -1
- package/src/version.d.ts +1 -1
- package/src/version.js +1 -1
- package/src/version.js.map +1 -1
- package/src/workers/session-recording-worker.js +13 -4
- package/src/workers/session-recording-worker.js.map +1 -1
- package/src/instrumentations/CoralogixCustomMeasurementInstrumentation.js.map +0 -1
- package/src/instrumentations/CoralogixFetchInstrumentation.js +0 -30
- package/src/instrumentations/CoralogixFetchInstrumentation.js.map +0 -1
- package/src/instrumentations/CoralogixXhrInstrumentation.js +0 -27
- package/src/instrumentations/CoralogixXhrInstrumentation.js.map +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CoralogixRumLabels } from '../../types';
|
|
2
|
+
import { MeasurementResult } from './custom-measurements.types';
|
|
3
|
+
export declare class TimeMeasurementTracker {
|
|
4
|
+
private measurements;
|
|
5
|
+
startMeasurement(key: string, labels?: CoralogixRumLabels): void;
|
|
6
|
+
getMeasurement(key: string): MeasurementResult | undefined;
|
|
7
|
+
private checkAndResetIfSessionExpired;
|
|
8
|
+
private logDebug;
|
|
9
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { getSdkConfig, getSessionManager } from '../../helpers';
|
|
2
|
+
export class TimeMeasurementTracker {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.measurements = new Map();
|
|
5
|
+
}
|
|
6
|
+
startMeasurement(key, labels) {
|
|
7
|
+
this.checkAndResetIfSessionExpired();
|
|
8
|
+
if (this.measurements.has(key) || !key.trim()) {
|
|
9
|
+
this.logDebug(`Invalid or duplicate key: "${key}".`);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
this.measurements.set(key, { startTime: Date.now(), labels });
|
|
13
|
+
}
|
|
14
|
+
getMeasurement(key) {
|
|
15
|
+
this.checkAndResetIfSessionExpired();
|
|
16
|
+
if (!this.measurements.has(key) || !key.trim()) {
|
|
17
|
+
this.logDebug(`Invalid or duplicate key: "${key}".`);
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const { startTime, labels } = this.measurements.get(key);
|
|
21
|
+
this.measurements.delete(key);
|
|
22
|
+
return {
|
|
23
|
+
duration: Date.now() - startTime,
|
|
24
|
+
labels,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
checkAndResetIfSessionExpired() {
|
|
28
|
+
if (getSessionManager().isIdleActive) {
|
|
29
|
+
this.measurements.clear();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
logDebug(message) {
|
|
33
|
+
if (getSdkConfig().debug) {
|
|
34
|
+
console.debug(`Coralogix Browser SDK - ${message}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=timeMeasurementTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeMeasurementTracker.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/custom-measurements/timeMeasurementTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIhE,MAAM,OAAO,sBAAsB;IAAnC;QACU,iBAAY,GAAoC,IAAI,GAAG,EAAE,CAAC;IAuCpE,CAAC;IArCC,gBAAgB,CAAC,GAAW,EAAE,MAA2B;QACvD,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;YAC7C,IAAI,CAAC,QAAQ,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAAC;YACrD,OAAO;SACR;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,cAAc,CAAC,GAAW;QACxB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;YAC9C,IAAI,CAAC,QAAQ,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAAC;YACrD,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC1D,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,6BAA6B;QACnC,IAAI,iBAAiB,EAAE,CAAC,YAAY,EAAE;YACpC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SAC3B;IACH,CAAC;IAEO,QAAQ,CAAC,OAAe;QAC9B,IAAI,YAAY,EAAE,CAAC,KAAK,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;SACrD;IACH,CAAC;CACF"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { InstrumentationBase, } from '@opentelemetry/instrumentation';
|
|
3
|
-
import { MEMORY_USAGE_INSTRUMENTATION_NAME, MEMORY_USAGE_INSTRUMENTATION_VERSION, } from './memory-usage
|
|
3
|
+
import { MEMORY_USAGE_INSTRUMENTATION_NAME, MEMORY_USAGE_INSTRUMENTATION_VERSION, } from './memory-usage-constants';
|
|
4
4
|
import { getSdkConfig } from '../../helpers';
|
|
5
5
|
import { CoralogixEventType } from '../../types';
|
|
6
6
|
import { CoralogixAttributes } from '../../constants';
|
|
7
|
+
import { mapMemoryUsageEntries } from './memory-usage.utils';
|
|
7
8
|
export class CoralogixMemoryUsageInstrumentation extends InstrumentationBase {
|
|
8
9
|
disable() {
|
|
9
10
|
this.clearMeasurementsInterval();
|
|
@@ -24,11 +25,14 @@ export class CoralogixMemoryUsageInstrumentation extends InstrumentationBase {
|
|
|
24
25
|
return __awaiter(this, void 0, void 0, function* () {
|
|
25
26
|
try {
|
|
26
27
|
const memoryUsage = yield performance.measureUserAgentSpecificMemory();
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
const memoryUsageEntries = mapMemoryUsageEntries(memoryUsage);
|
|
29
|
+
for (const entry of memoryUsageEntries) {
|
|
30
|
+
const memoryUsageSpan = this.tracer.startSpan(MEMORY_USAGE_INSTRUMENTATION_NAME);
|
|
31
|
+
memoryUsageSpan[CoralogixAttributes.EVENT_TYPE] =
|
|
32
|
+
CoralogixEventType.MEMORY_USAGE;
|
|
33
|
+
memoryUsageSpan[CoralogixAttributes.MEMORY_USAGE_CONTEXT] = entry;
|
|
34
|
+
memoryUsageSpan.end();
|
|
35
|
+
}
|
|
32
36
|
}
|
|
33
37
|
catch (error) {
|
|
34
38
|
console.warn('Memory usage measurement failed', error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoralogixMemoryUsageInstrumentation.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/memory-usage/CoralogixMemoryUsageInstrumentation.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,iCAAiC,EACjC,oCAAoC,GACrC,MAAM,
|
|
1
|
+
{"version":3,"file":"CoralogixMemoryUsageInstrumentation.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/memory-usage/CoralogixMemoryUsageInstrumentation.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,mBAAmB,GAEpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,iCAAiC,EACjC,oCAAoC,GACrC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,OAAO,mCAAoC,SAAQ,mBAAmB;IAMjE,OAAO;QACd,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACnC,CAAC;IAEQ,MAAM;QACb,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAClC,CAAC;IAES,IAAI,KAAU,CAAC;IAEzB,YAAY,MAA6B;QACvC,KAAK,CACH,iCAAiC,EACjC,oCAAoC,EACpC,MAAM,CACP,CAAC;QAlBI,wBAAmB,GACzB,YAAY,EAAE,CAAC,iBAAkB,CAAC,QAAS,CAAC;IAkB9C,CAAC;IAED,wBAAwB;QACtB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACrE,CAAC;IAEa,kBAAkB;;YAC9B,IAAI;gBACF,MAAM,WAAW,GACf,MAAM,WAAW,CAAC,8BAA8B,EAAE,CAAC;gBAErD,MAAM,kBAAkB,GACtB,qBAAqB,CAAC,WAAW,CAAC,CAAC;gBAErC,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE;oBACtC,MAAM,eAAe,GAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CACjD,iCAAiC,CAClC,CAAC;oBAEF,eAAe,CAAC,mBAAmB,CAAC,UAAU,CAAC;wBAC7C,kBAAkB,CAAC,YAAY,CAAC;oBAElC,eAAe,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,GAAG,KAAK,CAAC;oBAElE,eAAe,CAAC,GAAG,EAAE,CAAC;iBACvB;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;gBACvD,IAAI,CAAC,yBAAyB,EAAE,CAAC;aAClC;QACH,CAAC;KAAA;IAEO,qBAAqB;QAC3B,IAAI,CAAC,SAAS,GAAG,UAAU,CACzB,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAC/B,IAAI,CAAC,mBAAmB,CACzB,CAAC;IACJ,CAAC;IAEa,kBAAkB;;YAC9B,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC;KAAA;IAEO,yBAAyB;QAC/B,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC9B;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/memory-usage/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uCAAuC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-usage-constants.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/memory-usage/memory-usage-constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iCAAiC,GAAG,cAAc,CAAC;AAChE,MAAM,CAAC,MAAM,oCAAoC,GAAG,OAAO,CAAC;AAC5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAO,CAAC,CAAC,aAAa"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface MemoryUsageContext {
|
|
2
|
+
breakdown: MemoryUsageBreakdown[];
|
|
3
|
+
bytes: number;
|
|
4
|
+
}
|
|
5
|
+
export interface MemoryUsageBreakdown {
|
|
6
|
+
bytes: number;
|
|
7
|
+
types: string[];
|
|
8
|
+
attribution: MemoryUsageAttribution[];
|
|
9
|
+
}
|
|
10
|
+
export interface MemoryUsageEntry {
|
|
11
|
+
bytes: number;
|
|
12
|
+
uuid: string;
|
|
13
|
+
isParent?: boolean;
|
|
14
|
+
attribution?: MemoryUsageAttribution[];
|
|
15
|
+
types?: string;
|
|
16
|
+
}
|
|
17
|
+
interface MemoryUsageAttribution {
|
|
18
|
+
url: string;
|
|
19
|
+
scope: string;
|
|
20
|
+
container?: {
|
|
21
|
+
id: string;
|
|
22
|
+
src: string;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-usage.types.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/memory-usage/memory-usage.types.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const MEMORY_USAGE_INSTRUMENTATION_VERSION = "1.0.0";
|
|
3
|
-
export declare const MEMORY_USAGE_DEFAULT_INTERVAL = 300000;
|
|
1
|
+
import { MemoryUsageContext, MemoryUsageEntry } from './memory-usage.types';
|
|
4
2
|
export declare function isMeasureUserAgentSpecificMemoryAllowed(): boolean;
|
|
3
|
+
export declare function mapMemoryUsageEntries(memoryUsage: MemoryUsageContext): MemoryUsageEntry[];
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export const MEMORY_USAGE_INSTRUMENTATION_VERSION = '1.0.0';
|
|
3
|
-
export const MEMORY_USAGE_DEFAULT_INTERVAL = 300000; // 5 minutes;
|
|
1
|
+
import { generateUUID } from '../../utils';
|
|
4
2
|
export function isMeasureUserAgentSpecificMemoryAllowed() {
|
|
5
3
|
if (!window.crossOriginIsolated) {
|
|
6
4
|
console.debug('Coralogix Browser SDK - measureUserAgentSpecificMemory() is only available in cross-origin-isolated pages.');
|
|
@@ -12,4 +10,24 @@ export function isMeasureUserAgentSpecificMemoryAllowed() {
|
|
|
12
10
|
}
|
|
13
11
|
return true;
|
|
14
12
|
}
|
|
13
|
+
export function mapMemoryUsageEntries(memoryUsage) {
|
|
14
|
+
const uuid = generateUUID();
|
|
15
|
+
const parentEntry = {
|
|
16
|
+
uuid,
|
|
17
|
+
isParent: true,
|
|
18
|
+
bytes: memoryUsage.bytes,
|
|
19
|
+
};
|
|
20
|
+
const breakdownEntries = [];
|
|
21
|
+
for (const entry of memoryUsage.breakdown) {
|
|
22
|
+
if (entry.bytes > 0) {
|
|
23
|
+
breakdownEntries.push({
|
|
24
|
+
uuid,
|
|
25
|
+
bytes: entry.bytes,
|
|
26
|
+
attribution: entry.attribution,
|
|
27
|
+
types: entry.types.sort().join(', '),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return [parentEntry, ...breakdownEntries];
|
|
32
|
+
}
|
|
15
33
|
//# sourceMappingURL=memory-usage.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-usage.utils.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/memory-usage/memory-usage.utils.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"memory-usage.utils.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/memory-usage/memory-usage.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,UAAU,uCAAuC;IACrD,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;QAC/B,OAAO,CAAC,KAAK,CACX,4GAA4G,CAC7G,CAAC;QACF,OAAO,KAAK,CAAC;KACd;IAED,IAAI,CAAC,WAAW,CAAC,8BAA8B,EAAE;QAC/C,OAAO,CAAC,KAAK,CACX,2FAA2F,CAC5F,CAAC;QACF,OAAO,KAAK,CAAC;KACd;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,WAA+B;IAE/B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAE5B,MAAM,WAAW,GAAqB;QACpC,IAAI;QACJ,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,WAAW,CAAC,KAAK;KACzB,CAAC;IAEF,MAAM,gBAAgB,GAAuB,EAAE,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,SAAS,EAAE;QACzC,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;YACnB,gBAAgB,CAAC,IAAI,CAAC;gBACpB,IAAI;gBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC,CAAC,CAAC;SACJ;KACF;IACD,OAAO,CAAC,WAAW,EAAE,GAAG,gBAAgB,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -3,6 +3,10 @@ export declare enum FetchSource {
|
|
|
3
3
|
FETCH = "fetch"
|
|
4
4
|
}
|
|
5
5
|
export declare class CoralogixFetchInstrumentation extends FetchInstrumentation {
|
|
6
|
+
private networkDataManager;
|
|
7
|
+
private headersManager;
|
|
6
8
|
constructor(config: FetchInstrumentationConfig);
|
|
7
|
-
|
|
9
|
+
private setNetworkSpanAttributes;
|
|
10
|
+
private setRequestAttributes;
|
|
11
|
+
private setResponseAttributes;
|
|
8
12
|
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { FetchInstrumentation, } from '@opentelemetry/instrumentation-fetch';
|
|
3
|
+
import { CoralogixAttributes } from '../../constants';
|
|
4
|
+
import { CoralogixEventType } from '../../types';
|
|
5
|
+
import { CoralogixLogSeverity } from '../../types-external';
|
|
6
|
+
import { propagateTraceHeaderCorsUrls } from '../../otel/CoralogixPropgator';
|
|
7
|
+
import { isNetworkError } from '../../utils';
|
|
8
|
+
import { NetworkDataManager } from './NetworkDataManager';
|
|
9
|
+
import { getSdkConfig } from '../../helpers';
|
|
10
|
+
import { HeadersManager } from './HeadersManager';
|
|
11
|
+
import { NetworkInstrumentationAttributes } from './constants';
|
|
12
|
+
export var FetchSource;
|
|
13
|
+
(function (FetchSource) {
|
|
14
|
+
FetchSource["FETCH"] = "fetch";
|
|
15
|
+
})(FetchSource || (FetchSource = {}));
|
|
16
|
+
export class CoralogixFetchInstrumentation extends FetchInstrumentation {
|
|
17
|
+
constructor(config) {
|
|
18
|
+
propagateTraceHeaderCorsUrls(config);
|
|
19
|
+
config.applyCustomAttributesOnSpan = (span, request, result) => {
|
|
20
|
+
this.setNetworkSpanAttributes(span, request, result);
|
|
21
|
+
};
|
|
22
|
+
super(config);
|
|
23
|
+
this.networkDataManager = new NetworkDataManager();
|
|
24
|
+
this.headersManager = new HeadersManager();
|
|
25
|
+
}
|
|
26
|
+
setNetworkSpanAttributes(span, request, response) {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const { status } = response;
|
|
29
|
+
const { networkExtraConfig } = getSdkConfig();
|
|
30
|
+
const url = span.attributes['http.url'] ||
|
|
31
|
+
'';
|
|
32
|
+
const resolvedConfig = this.networkDataManager.resolveConfigForUrl(url, networkExtraConfig);
|
|
33
|
+
if (resolvedConfig) {
|
|
34
|
+
yield this.setRequestAttributes(span, request, resolvedConfig);
|
|
35
|
+
yield this.setResponseAttributes(span, response, resolvedConfig);
|
|
36
|
+
}
|
|
37
|
+
span.setAttributes({
|
|
38
|
+
[CoralogixAttributes.SEVERITY]: isNetworkError(status)
|
|
39
|
+
? CoralogixLogSeverity.Error
|
|
40
|
+
: CoralogixLogSeverity.Info,
|
|
41
|
+
[CoralogixAttributes.EVENT_TYPE]: CoralogixEventType.NETWORK_REQUEST,
|
|
42
|
+
[CoralogixAttributes.SOURCE]: FetchSource.FETCH,
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
setRequestAttributes(span, request, networkExtraConfig) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
const { reqHeaders, collectReqPayload } = networkExtraConfig;
|
|
49
|
+
try {
|
|
50
|
+
const requestPayload = collectReqPayload
|
|
51
|
+
? yield this.networkDataManager.stringifyRequestBody(request)
|
|
52
|
+
: undefined;
|
|
53
|
+
const sanitizedHeaders = (reqHeaders === null || reqHeaders === void 0 ? void 0 : reqHeaders.length)
|
|
54
|
+
? this.headersManager.filterHeaders(request.headers, reqHeaders)
|
|
55
|
+
: undefined;
|
|
56
|
+
if (requestPayload)
|
|
57
|
+
span[NetworkInstrumentationAttributes.REQUEST_PAYLOAD] = requestPayload;
|
|
58
|
+
if (sanitizedHeaders === null || sanitizedHeaders === void 0 ? void 0 : sanitizedHeaders.size) {
|
|
59
|
+
span[NetworkInstrumentationAttributes.REQUEST_HEADERS] =
|
|
60
|
+
Object.fromEntries(sanitizedHeaders);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (getSdkConfig().debug) {
|
|
65
|
+
console.debug('Error setting request attributes on span:', error);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
setResponseAttributes(span, result, networkExtraConfig) {
|
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
const { resHeaders, collectResPayload } = networkExtraConfig;
|
|
73
|
+
if (result instanceof Response) {
|
|
74
|
+
try {
|
|
75
|
+
const responsePayload = collectResPayload
|
|
76
|
+
? yield this.networkDataManager.stringifyResponseBody(result)
|
|
77
|
+
: undefined;
|
|
78
|
+
const sanitizedHeaders = (resHeaders === null || resHeaders === void 0 ? void 0 : resHeaders.length)
|
|
79
|
+
? this.headersManager.filterHeaders(result.headers, resHeaders)
|
|
80
|
+
: undefined;
|
|
81
|
+
if (responsePayload) {
|
|
82
|
+
span[NetworkInstrumentationAttributes.RESPONSE_PAYLOAD] =
|
|
83
|
+
responsePayload;
|
|
84
|
+
}
|
|
85
|
+
if (sanitizedHeaders === null || sanitizedHeaders === void 0 ? void 0 : sanitizedHeaders.size) {
|
|
86
|
+
span[NetworkInstrumentationAttributes.RESPONSE_HEADERS] =
|
|
87
|
+
Object.fromEntries(sanitizedHeaders);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
if (getSdkConfig().debug) {
|
|
92
|
+
console.debug('Error setting request attributes on span:', error);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=CoralogixFetchInstrumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoralogixFetchInstrumentation.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/network/CoralogixFetchInstrumentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,9 @@ export declare enum XHRSource {
|
|
|
3
3
|
XHR = "xhr"
|
|
4
4
|
}
|
|
5
5
|
export declare class CoralogixXhrInstrumentation extends XMLHttpRequestInstrumentation {
|
|
6
|
+
private networkDataManager;
|
|
7
|
+
private headersManager;
|
|
6
8
|
constructor(config: XMLHttpRequestInstrumentationConfig);
|
|
9
|
+
private setNetworkSpanAttributes;
|
|
10
|
+
private setResponseAttributes;
|
|
7
11
|
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { XMLHttpRequestInstrumentation, } from '@opentelemetry/instrumentation-xml-http-request';
|
|
2
|
+
import { CoralogixAttributes } from '../../constants';
|
|
3
|
+
import { CoralogixEventType } from '../../types';
|
|
4
|
+
import { CoralogixLogSeverity } from '../../types-external';
|
|
5
|
+
import { isNetworkError } from '../../utils';
|
|
6
|
+
import { propagateTraceHeaderCorsUrls } from '../../otel/CoralogixPropgator';
|
|
7
|
+
import { NetworkDataManager } from './NetworkDataManager';
|
|
8
|
+
import { getSdkConfig } from '../../helpers';
|
|
9
|
+
import { HeadersManager } from './HeadersManager';
|
|
10
|
+
import { NetworkInstrumentationAttributes } from './constants';
|
|
11
|
+
export var XHRSource;
|
|
12
|
+
(function (XHRSource) {
|
|
13
|
+
XHRSource["XHR"] = "xhr";
|
|
14
|
+
})(XHRSource || (XHRSource = {}));
|
|
15
|
+
export class CoralogixXhrInstrumentation extends XMLHttpRequestInstrumentation {
|
|
16
|
+
constructor(config) {
|
|
17
|
+
propagateTraceHeaderCorsUrls(config);
|
|
18
|
+
config.applyCustomAttributesOnSpan = (span, xhr) => {
|
|
19
|
+
this.setNetworkSpanAttributes(span, xhr);
|
|
20
|
+
};
|
|
21
|
+
super(config);
|
|
22
|
+
this.networkDataManager = new NetworkDataManager();
|
|
23
|
+
this.headersManager = new HeadersManager();
|
|
24
|
+
}
|
|
25
|
+
setNetworkSpanAttributes(span, xhr) {
|
|
26
|
+
const { status } = xhr;
|
|
27
|
+
const { networkExtraConfig } = getSdkConfig();
|
|
28
|
+
const resolvedConfig = this.networkDataManager.resolveConfigForUrl(xhr.responseURL, networkExtraConfig);
|
|
29
|
+
span.setAttributes({
|
|
30
|
+
[CoralogixAttributes.SEVERITY]: isNetworkError(status)
|
|
31
|
+
? CoralogixLogSeverity.Error
|
|
32
|
+
: CoralogixLogSeverity.Info,
|
|
33
|
+
[CoralogixAttributes.EVENT_TYPE]: CoralogixEventType.NETWORK_REQUEST,
|
|
34
|
+
[CoralogixAttributes.SOURCE]: XHRSource.XHR,
|
|
35
|
+
});
|
|
36
|
+
if (resolvedConfig) {
|
|
37
|
+
this.setResponseAttributes(span, xhr, resolvedConfig);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
setResponseAttributes(span, xhr, resolvedConfig) {
|
|
41
|
+
const { resHeaders, collectResPayload } = resolvedConfig;
|
|
42
|
+
const responsePayload = collectResPayload
|
|
43
|
+
? this.networkDataManager.truncateIfExceedsLimit(xhr.responseText)
|
|
44
|
+
: undefined;
|
|
45
|
+
const sanitizedHeaders = (resHeaders === null || resHeaders === void 0 ? void 0 : resHeaders.length)
|
|
46
|
+
? this.headersManager.filterHeaders(xhr.getAllResponseHeaders(), resHeaders)
|
|
47
|
+
: undefined;
|
|
48
|
+
if (responsePayload) {
|
|
49
|
+
span[NetworkInstrumentationAttributes.RESPONSE_PAYLOAD] = responsePayload;
|
|
50
|
+
}
|
|
51
|
+
if (sanitizedHeaders === null || sanitizedHeaders === void 0 ? void 0 : sanitizedHeaders.size) {
|
|
52
|
+
span[NetworkInstrumentationAttributes.RESPONSE_HEADERS] =
|
|
53
|
+
Object.fromEntries(sanitizedHeaders);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=CoralogixXhrInstrumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CoralogixXhrInstrumentation.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/network/CoralogixXhrInstrumentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export class HeadersManager {
|
|
2
|
+
filterHeaders(headersInit, allowedKeys = []) {
|
|
3
|
+
if (!headersInit) {
|
|
4
|
+
return new Map();
|
|
5
|
+
}
|
|
6
|
+
const normalized = this.normalizeHeaders(headersInit);
|
|
7
|
+
const filteredHeaders = new Map();
|
|
8
|
+
allowedKeys.forEach((headerKey) => {
|
|
9
|
+
const normalizedKey = headerKey.toLowerCase();
|
|
10
|
+
if (normalized.has(normalizedKey)) {
|
|
11
|
+
filteredHeaders.set(headerKey, normalized.get(normalizedKey));
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
return filteredHeaders;
|
|
15
|
+
}
|
|
16
|
+
normalizeHeaders(headersInit) {
|
|
17
|
+
if (typeof headersInit === 'string') {
|
|
18
|
+
return this.normalizeHeadersFromString(headersInit);
|
|
19
|
+
}
|
|
20
|
+
const headers = new Headers(headersInit);
|
|
21
|
+
const headersMap = new Map();
|
|
22
|
+
headers.forEach((value, key) => {
|
|
23
|
+
headersMap.set(key.toLowerCase(), value);
|
|
24
|
+
});
|
|
25
|
+
return headersMap;
|
|
26
|
+
}
|
|
27
|
+
normalizeHeadersFromString(headersString) {
|
|
28
|
+
const headerMap = new Map();
|
|
29
|
+
if (!headersString) {
|
|
30
|
+
return headerMap;
|
|
31
|
+
}
|
|
32
|
+
const lines = headersString.trim().split(/\r\n/);
|
|
33
|
+
lines.forEach((line) => {
|
|
34
|
+
const [key, value] = line.split(': ', 2);
|
|
35
|
+
if (key && value) {
|
|
36
|
+
headerMap.set(key.trim().toLowerCase(), value.trim());
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
return headerMap;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=HeadersManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HeadersManager.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/network/HeadersManager.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IACzB,aAAa,CACX,WAA6C,EAC7C,cAAwB,EAAE;QAE1B,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,IAAI,GAAG,EAAE,CAAC;SAClB;QAED,MAAM,UAAU,GAAwB,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC3E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAElD,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAChC,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YAC9C,IAAI,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;gBACjC,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC,CAAC;aAChE;QACH,CAAC,CAAC,CAAC;QACH,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,gBAAgB,CACtB,WAAiC;QAEjC,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACnC,OAAO,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;SACrD;QAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE7C,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,0BAA0B,CAChC,aAAqB;QAErB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC5C,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACrB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,GAAG,IAAI,KAAK,EAAE;gBAChB,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;aACvD;QACH,CAAC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { NetworkExtraConfig } from '../../types';
|
|
2
|
+
export declare class NetworkDataManager {
|
|
3
|
+
private readonly responseBodyParsers;
|
|
4
|
+
private readonly requestBodySerializers;
|
|
5
|
+
resolveConfigForUrl(url: string, configs?: NetworkExtraConfig[]): NetworkExtraConfig | undefined;
|
|
6
|
+
stringifyRequestBody(request: Request | RequestInit): Promise<string | undefined>;
|
|
7
|
+
stringifyResponseBody(response: Response): Promise<string | undefined>;
|
|
8
|
+
truncateIfExceedsLimit(content: string): string | undefined;
|
|
9
|
+
private serializeRequestBody;
|
|
10
|
+
private serializeFormData;
|
|
11
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { MAX_CHARACTERS } from '../../constants';
|
|
3
|
+
export class NetworkDataManager {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.responseBodyParsers = new Map([
|
|
6
|
+
[MimeType.Json, (body) => __awaiter(this, void 0, void 0, function* () { return JSON.stringify(yield body.json()); })],
|
|
7
|
+
[MimeType.TextPlain, (body) => __awaiter(this, void 0, void 0, function* () { return yield body.text(); })],
|
|
8
|
+
[MimeType.TextHtml, (body) => __awaiter(this, void 0, void 0, function* () { return yield body.text(); })],
|
|
9
|
+
[MimeType.TextCss, (body) => __awaiter(this, void 0, void 0, function* () { return yield body.text(); })],
|
|
10
|
+
[MimeType.TextJavascript, (body) => __awaiter(this, void 0, void 0, function* () { return yield body.text(); })],
|
|
11
|
+
[MimeType.Xml, (body) => __awaiter(this, void 0, void 0, function* () { return yield body.text(); })],
|
|
12
|
+
[MimeType.FormData, (body) => __awaiter(this, void 0, void 0, function* () { return yield body.text(); })],
|
|
13
|
+
]);
|
|
14
|
+
this.requestBodySerializers = new Map([
|
|
15
|
+
[BodyType.String, (body) => __awaiter(this, void 0, void 0, function* () { return body; })],
|
|
16
|
+
[BodyType.Blob, (body) => __awaiter(this, void 0, void 0, function* () { return body.text(); })],
|
|
17
|
+
[
|
|
18
|
+
BodyType.FormData,
|
|
19
|
+
(body) => __awaiter(this, void 0, void 0, function* () { return this.serializeFormData(body); }),
|
|
20
|
+
],
|
|
21
|
+
[
|
|
22
|
+
BodyType.URLSearchParams,
|
|
23
|
+
(body) => __awaiter(this, void 0, void 0, function* () { return body.toString(); }),
|
|
24
|
+
],
|
|
25
|
+
[BodyType.JsonObject, (body) => __awaiter(this, void 0, void 0, function* () { return JSON.stringify(body); })],
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
resolveConfigForUrl(url, configs = []) {
|
|
29
|
+
return configs.find(({ url: configUrl }) => configUrl === url ||
|
|
30
|
+
(configUrl instanceof RegExp && configUrl.test(url)));
|
|
31
|
+
}
|
|
32
|
+
stringifyRequestBody(request) {
|
|
33
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
34
|
+
if (!(request === null || request === void 0 ? void 0 : request.body))
|
|
35
|
+
return '';
|
|
36
|
+
const bodyContent = yield this.serializeRequestBody(request.body);
|
|
37
|
+
return this.truncateIfExceedsLimit(bodyContent);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
stringifyResponseBody(response) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const contentType = response.headers.get('content-type') || '';
|
|
43
|
+
const mimeType = contentType.split(';')[0].trim();
|
|
44
|
+
const parser = this.responseBodyParsers.get(mimeType);
|
|
45
|
+
if (!parser)
|
|
46
|
+
return '';
|
|
47
|
+
const parsedContent = yield parser(response);
|
|
48
|
+
return this.truncateIfExceedsLimit(parsedContent);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
truncateIfExceedsLimit(content) {
|
|
52
|
+
return content.length > MAX_CHARACTERS ? undefined : content;
|
|
53
|
+
}
|
|
54
|
+
serializeRequestBody(body) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const handler = this.requestBodySerializers.get(body.constructor.name);
|
|
57
|
+
return handler ? yield handler(body) : '';
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
serializeFormData(formData) {
|
|
61
|
+
let result = '';
|
|
62
|
+
formData.forEach((value, key) => {
|
|
63
|
+
result += `${key}: ${value}\n`;
|
|
64
|
+
});
|
|
65
|
+
return result.trim();
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
var MimeType;
|
|
69
|
+
(function (MimeType) {
|
|
70
|
+
MimeType["Json"] = "application/json";
|
|
71
|
+
MimeType["TextPlain"] = "text/plain";
|
|
72
|
+
MimeType["TextHtml"] = "text/html";
|
|
73
|
+
MimeType["TextCss"] = "text/css";
|
|
74
|
+
MimeType["TextJavascript"] = "application/javascript";
|
|
75
|
+
MimeType["Xml"] = "application/xml";
|
|
76
|
+
MimeType["FormData"] = "multipart/form-data";
|
|
77
|
+
})(MimeType || (MimeType = {}));
|
|
78
|
+
var BodyType;
|
|
79
|
+
(function (BodyType) {
|
|
80
|
+
BodyType["String"] = "String";
|
|
81
|
+
BodyType["Blob"] = "Blob";
|
|
82
|
+
BodyType["FormData"] = "FormData";
|
|
83
|
+
BodyType["URLSearchParams"] = "URLSearchParams";
|
|
84
|
+
BodyType["JsonObject"] = "JsonObject";
|
|
85
|
+
BodyType["Unknown"] = "Unknown";
|
|
86
|
+
})(BodyType || (BodyType = {}));
|
|
87
|
+
//# sourceMappingURL=NetworkDataManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkDataManager.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/network/NetworkDataManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../libs/browser/src/instrumentations/network/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,eAAe,EAAE,iBAAiB;CACnC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InstrumentationBase, InstrumentationConfig } from '@opentelemetry/instrumentation';
|
|
2
|
+
export declare class CoralogixScreenshotInstrumentation extends InstrumentationBase {
|
|
3
|
+
constructor(config: InstrumentationConfig);
|
|
4
|
+
protected init(): void;
|
|
5
|
+
disable(): void;
|
|
6
|
+
enable(): void;
|
|
7
|
+
screenshot(id: string, description?: string): void;
|
|
8
|
+
}
|