@multiplayer-app/session-recorder-common 1.3.27 → 1.3.28
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/esm/SessionRecorderTraceIdRatioBasedSampler.d.ts +2 -1
- package/dist/esm/SessionRecorderTraceIdRatioBasedSampler.d.ts.map +1 -1
- package/dist/esm/SessionRecorderTraceIdRatioBasedSampler.js +10 -5
- package/dist/esm/SessionRecorderTraceIdRatioBasedSampler.js.map +1 -1
- package/dist/esm/exporters/SessionRecorderBrowserTraceExporter.d.ts +6 -2
- package/dist/esm/exporters/SessionRecorderBrowserTraceExporter.d.ts.map +1 -1
- package/dist/esm/exporters/SessionRecorderBrowserTraceExporter.js +57 -21
- package/dist/esm/exporters/SessionRecorderBrowserTraceExporter.js.map +1 -1
- package/dist/esm/sdk/capture-exception.d.ts +1 -1
- package/dist/esm/sdk/capture-exception.d.ts.map +1 -1
- package/dist/esm/sdk/capture-exception.js +59 -5
- package/dist/esm/sdk/capture-exception.js.map +1 -1
- package/dist/esm/sdk/index.d.ts +1 -0
- package/dist/esm/sdk/index.d.ts.map +1 -1
- package/dist/esm/sdk/index.js +1 -0
- package/dist/esm/sdk/index.js.map +1 -1
- package/dist/esm/sdk/set-resource-attributes.d.ts +3 -0
- package/dist/esm/sdk/set-resource-attributes.d.ts.map +1 -0
- package/dist/esm/sdk/set-resource-attributes.js +8 -0
- package/dist/esm/sdk/set-resource-attributes.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esnext/SessionRecorderTraceIdRatioBasedSampler.d.ts +2 -1
- package/dist/esnext/SessionRecorderTraceIdRatioBasedSampler.d.ts.map +1 -1
- package/dist/esnext/SessionRecorderTraceIdRatioBasedSampler.js +10 -5
- package/dist/esnext/SessionRecorderTraceIdRatioBasedSampler.js.map +1 -1
- package/dist/esnext/exporters/SessionRecorderBrowserTraceExporter.d.ts +6 -2
- package/dist/esnext/exporters/SessionRecorderBrowserTraceExporter.d.ts.map +1 -1
- package/dist/esnext/exporters/SessionRecorderBrowserTraceExporter.js +57 -20
- package/dist/esnext/exporters/SessionRecorderBrowserTraceExporter.js.map +1 -1
- package/dist/esnext/sdk/capture-exception.d.ts +1 -1
- package/dist/esnext/sdk/capture-exception.d.ts.map +1 -1
- package/dist/esnext/sdk/capture-exception.js +30 -5
- package/dist/esnext/sdk/capture-exception.js.map +1 -1
- package/dist/esnext/sdk/index.d.ts +1 -0
- package/dist/esnext/sdk/index.d.ts.map +1 -1
- package/dist/esnext/sdk/index.js +1 -0
- package/dist/esnext/sdk/index.js.map +1 -1
- package/dist/esnext/sdk/set-resource-attributes.d.ts +3 -0
- package/dist/esnext/sdk/set-resource-attributes.d.ts.map +1 -0
- package/dist/esnext/sdk/set-resource-attributes.js +8 -0
- package/dist/esnext/sdk/set-resource-attributes.js.map +1 -0
- package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -1
- package/dist/src/SessionRecorderTraceIdRatioBasedSampler.d.ts +2 -1
- package/dist/src/SessionRecorderTraceIdRatioBasedSampler.d.ts.map +1 -1
- package/dist/src/SessionRecorderTraceIdRatioBasedSampler.js +8 -2
- package/dist/src/SessionRecorderTraceIdRatioBasedSampler.js.map +1 -1
- package/dist/src/exporters/SessionRecorderBrowserTraceExporter.d.ts +6 -2
- package/dist/src/exporters/SessionRecorderBrowserTraceExporter.d.ts.map +1 -1
- package/dist/src/exporters/SessionRecorderBrowserTraceExporter.js +56 -19
- package/dist/src/exporters/SessionRecorderBrowserTraceExporter.js.map +1 -1
- package/dist/src/sdk/capture-exception.d.ts +1 -1
- package/dist/src/sdk/capture-exception.d.ts.map +1 -1
- package/dist/src/sdk/capture-exception.js +30 -5
- package/dist/src/sdk/capture-exception.js.map +1 -1
- package/dist/src/sdk/index.d.ts +1 -0
- package/dist/src/sdk/index.d.ts.map +1 -1
- package/dist/src/sdk/index.js +1 -0
- package/dist/src/sdk/index.js.map +1 -1
- package/dist/src/sdk/set-resource-attributes.d.ts +3 -0
- package/dist/src/sdk/set-resource-attributes.d.ts.map +1 -0
- package/dist/src/sdk/set-resource-attributes.js +13 -0
- package/dist/src/sdk/set-resource-attributes.js.map +1 -0
- package/package.json +1 -1
- package/src/SessionRecorderTraceIdRatioBasedSampler.ts +29 -4
- package/src/exporters/SessionRecorderBrowserTraceExporter.ts +57 -24
- package/src/sdk/capture-exception.ts +49 -4
- package/src/sdk/index.ts +1 -0
- package/src/sdk/set-resource-attributes.ts +9 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { Context, SpanKind, Attributes, Link } from '@opentelemetry/api';
|
|
1
2
|
import { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-base';
|
|
2
3
|
export declare class SessionRecorderTraceIdRatioBasedSampler implements Sampler {
|
|
3
4
|
private readonly _ratio;
|
|
4
5
|
private _upperBound;
|
|
5
6
|
constructor(_ratio?: number);
|
|
6
|
-
shouldSample(context:
|
|
7
|
+
shouldSample(context: Context, traceId: string, spanName: string, spanKind: SpanKind, attributes: Attributes, links: Link[]): SamplingResult;
|
|
7
8
|
toString(): string;
|
|
8
9
|
private _normalize;
|
|
9
10
|
private _accumulate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRecorderTraceIdRatioBasedSampler.d.ts","sourceRoot":"","sources":["../../src/SessionRecorderTraceIdRatioBasedSampler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,OAAO,EAEP,cAAc,EACf,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"SessionRecorderTraceIdRatioBasedSampler.d.ts","sourceRoot":"","sources":["../../src/SessionRecorderTraceIdRatioBasedSampler.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EACP,QAAQ,EACR,UAAU,EACV,IAAI,EACL,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,OAAO,EAEP,cAAc,EACf,MAAM,+BAA+B,CAAA;AAatC,qBAAa,uCAAwC,YAAW,OAAO;IAGzD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,WAAW,CAAQ;gBAEE,MAAM,GAAE,MAAU;IAK/C,YAAY,CACV,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,IAAI,EAAE,GACZ,cAAc;IA8BjB,QAAQ,IAAI,MAAM;IAIlB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,WAAW;CASpB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { isValidTraceId } from '@opentelemetry/api';
|
|
1
|
+
import { isValidTraceId, } from '@opentelemetry/api';
|
|
2
2
|
import { SamplingDecision, } from '@opentelemetry/sdk-trace-base';
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import { ATTR_EXCEPTION_MESSAGE, ATTR_EXCEPTION_STACKTRACE, ATTR_EXCEPTION_TYPE, } from '@opentelemetry/semantic-conventions';
|
|
4
|
+
import { MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX,
|
|
5
5
|
// MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX,
|
|
6
6
|
} from './constants/constants.base';
|
|
7
7
|
var SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {
|
|
@@ -11,10 +11,15 @@ var SessionRecorderTraceIdRatioBasedSampler = /** @class */ (function () {
|
|
|
11
11
|
this._ratio = this._normalize(_ratio);
|
|
12
12
|
this._upperBound = Math.floor(this._ratio * 0xffffffff);
|
|
13
13
|
}
|
|
14
|
-
SessionRecorderTraceIdRatioBasedSampler.prototype.shouldSample = function (context, traceId) {
|
|
14
|
+
SessionRecorderTraceIdRatioBasedSampler.prototype.shouldSample = function (context, traceId, spanName, spanKind, attributes, links) {
|
|
15
|
+
if (attributes[ATTR_EXCEPTION_MESSAGE] || attributes[ATTR_EXCEPTION_STACKTRACE] || attributes[ATTR_EXCEPTION_TYPE]) {
|
|
16
|
+
return {
|
|
17
|
+
decision: SamplingDecision.RECORD_AND_SAMPLED,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
15
20
|
if (traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX)
|
|
16
21
|
|| traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)
|
|
17
|
-
|
|
22
|
+
|| traceId.startsWith(MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX)
|
|
18
23
|
// || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX)
|
|
19
24
|
) {
|
|
20
25
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRecorderTraceIdRatioBasedSampler.js","sourceRoot":"","sources":["../../src/SessionRecorderTraceIdRatioBasedSampler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SessionRecorderTraceIdRatioBasedSampler.js","sourceRoot":"","sources":["../../src/SessionRecorderTraceIdRatioBasedSampler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,GAKf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAEL,gBAAgB,GAEjB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EACL,8BAA8B,EAC9B,yCAAyC,EACzC,sCAAsC;AACtC,qDAAqD;EACtD,MAAM,4BAA4B,CAAA;AAEnC;IAGE,iDAA6B,MAAkB;QAAlB,uBAAA,EAAA,UAAkB;QAAlB,WAAM,GAAN,MAAM,CAAY;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAA;IACzD,CAAC;IAED,8DAAY,GAAZ,UACE,OAAgB,EAChB,OAAe,EACf,QAAgB,EAChB,QAAkB,EAClB,UAAsB,EACtB,KAAa;QAEb,IAAI,UAAU,CAAC,sBAAsB,CAAC,IAAI,UAAU,CAAC,yBAAyB,CAAC,IAAI,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACnH,OAAO;gBACL,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB;aAC9C,CAAA;QACH,CAAC;QAED,IACE,OAAO,CAAC,UAAU,CAAC,8BAA8B,CAAC;eAC/C,OAAO,CAAC,UAAU,CAAC,yCAAyC,CAAC;eAC7D,OAAO,CAAC,UAAU,CAAC,sCAAsC,CAAC;QAC7D,2EAA2E;UAC3E,CAAC;YACD,OAAO;gBACL,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB;aAC9C,CAAA;QACH,CAAC;QAED,IAAI,QAAQ,GAAqB,gBAAgB,CAAC,UAAU,CAAA;QAE5D,IACE,cAAc,CAAC,OAAO,CAAC;eACpB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,EAC/C,CAAC;YACD,QAAQ,GAAG,gBAAgB,CAAC,kBAAkB,CAAA;QAChD,CAAC;QAED,OAAO,EAAE,QAAQ,UAAA,EAAE,CAAA;IACrB,CAAC;IAED,0DAAQ,GAAR;QACE,OAAO,kDAA2C,IAAI,CAAC,MAAM,MAAG,CAAA;IAClE,CAAC;IAEO,4DAAU,GAAlB,UAAmB,KAAa;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QACvD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAChD,CAAC;IAEO,6DAAW,GAAnB,UAAoB,OAAe;QACjC,IAAI,YAAY,GAAG,CAAC,CAAA;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;YACjB,IAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACtD,YAAY,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,YAAY,CAAA;IACrB,CAAC;IACH,8CAAC;AAAD,CAAC,AA/DD,IA+DC","sourcesContent":["\nimport {\n isValidTraceId,\n Context,\n SpanKind,\n Attributes,\n Link,\n} from '@opentelemetry/api'\nimport {\n Sampler,\n SamplingDecision,\n SamplingResult,\n} from '@opentelemetry/sdk-trace-base'\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions'\nimport {\n MULTIPLAYER_TRACE_DEBUG_PREFIX,\n MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX,\n MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX,\n // MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX,\n} from './constants/constants.base'\n\nexport class SessionRecorderTraceIdRatioBasedSampler implements Sampler {\n private _upperBound: number\n\n constructor(private readonly _ratio: number = 0) {\n this._ratio = this._normalize(_ratio)\n this._upperBound = Math.floor(this._ratio * 0xffffffff)\n }\n\n shouldSample(\n context: Context,\n traceId: string,\n spanName: string,\n spanKind: SpanKind,\n attributes: Attributes,\n links: Link[],\n ): SamplingResult {\n if (attributes[ATTR_EXCEPTION_MESSAGE] || attributes[ATTR_EXCEPTION_STACKTRACE] || attributes[ATTR_EXCEPTION_TYPE]) {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n }\n }\n\n if (\n traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX)\n || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)\n || traceId.startsWith(MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX)\n // || traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_SESSION_CACHE_PREFIX)\n ) {\n return {\n decision: SamplingDecision.RECORD_AND_SAMPLED,\n }\n }\n\n let decision: SamplingDecision = SamplingDecision.NOT_RECORD\n\n if (\n isValidTraceId(traceId)\n && this._accumulate(traceId) < this._upperBound\n ) {\n decision = SamplingDecision.RECORD_AND_SAMPLED\n }\n\n return { decision }\n }\n\n toString(): string {\n return `SessionRecorderTraceIdRatioBasedSampler{${this._ratio}}`\n }\n\n private _normalize(ratio: number): number {\n if (typeof ratio !== 'number' || isNaN(ratio)) return 0\n return ratio >= 1 ? 1 : ratio <= 0 ? 0 : ratio\n }\n\n private _accumulate(traceId: string): number {\n let accumulation = 0\n for (let i = 0; i < traceId.length / 8; i++) {\n const pos = i * 8\n const part = parseInt(traceId.slice(pos, pos + 8), 16)\n accumulation = (accumulation ^ part) >>> 0\n }\n return accumulation\n }\n}\n"]}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';
|
|
2
|
-
import { ExportResult } from '@opentelemetry/core';
|
|
3
2
|
export interface SessionRecorderBrowserTraceExporterConfig {
|
|
4
3
|
/** URL for the OTLP endpoint. Defaults to Multiplayer's default traces endpoint. */
|
|
5
4
|
url?: string;
|
|
@@ -32,11 +31,16 @@ export declare class SessionRecorderBrowserTraceExporter implements SpanExporter
|
|
|
32
31
|
private readonly postMessageTargetOrigin;
|
|
33
32
|
private readonly config;
|
|
34
33
|
constructor(config?: SessionRecorderBrowserTraceExporterConfig);
|
|
34
|
+
_export(spans: ReadableSpan[], resultCallback: (result: {
|
|
35
|
+
code: number;
|
|
36
|
+
}) => void): void;
|
|
35
37
|
export(spans: ReadableSpan[], resultCallback: (result: {
|
|
36
38
|
code: number;
|
|
37
39
|
}) => void): void;
|
|
40
|
+
exportBuffer(spans: ReadableSpan[], resultCallback: (result: {
|
|
41
|
+
code: number;
|
|
42
|
+
}) => void): void;
|
|
38
43
|
shutdown(): Promise<void>;
|
|
39
|
-
exportBuffer(spans: ReadableSpan[]): Promise<ExportResult | undefined>;
|
|
40
44
|
private exportViaPostMessage;
|
|
41
45
|
serializeSpan(span: ReadableSpan): any;
|
|
42
46
|
private _createExporter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRecorderBrowserTraceExporter.d.ts","sourceRoot":"","sources":["../../../src/exporters/SessionRecorderBrowserTraceExporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"SessionRecorderBrowserTraceExporter.d.ts","sourceRoot":"","sources":["../../../src/exporters/SessionRecorderBrowserTraceExporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAU1E,MAAM,WAAW,yCAAyC;IACxD,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4CAA4C;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oEAAoE;IACpE,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,kCAAkC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,gCAAgC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC;AAED;;;;GAIG;AACH,qBAAa,mCAAoC,YAAW,YAAY;IACtE,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAQ;IACxC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAQ;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;gBAEtD,MAAM,GAAE,yCAA8C;IA0BlE,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;IAwBxF,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;IAYvF,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI;IAQ7F,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzB,OAAO,CAAC,oBAAoB;IAqB5B,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,GAAG;IAuCtC,OAAO,CAAC,eAAe;IAcvB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAIhC"}
|
|
@@ -10,7 +10,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
12
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
13
|
-
import { MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL, MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, } from '../constants/constants.base';
|
|
13
|
+
import { MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL, MULTIPLAYER_TRACE_DEBUG_PREFIX, MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX, MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX, } from '../constants/constants.base';
|
|
14
14
|
/**
|
|
15
15
|
* Browser-specific trace exporter for Session Recorder
|
|
16
16
|
* Exports traces via HTTP to Multiplayer's OTLP endpoint with browser-specific optimizations
|
|
@@ -26,46 +26,48 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
26
26
|
this.postMessageTargetOrigin = postMessageTargetOrigin;
|
|
27
27
|
this.exporter = this._createExporter();
|
|
28
28
|
}
|
|
29
|
-
SessionRecorderBrowserTraceExporter.prototype.
|
|
29
|
+
SessionRecorderBrowserTraceExporter.prototype._export = function (spans, resultCallback) {
|
|
30
30
|
var _this = this;
|
|
31
|
-
// Filter spans to only include those with Multiplayer trace prefixes
|
|
32
|
-
var filteredSpans = spans.filter(function (span) {
|
|
33
|
-
var traceId = span.spanContext().traceId;
|
|
34
|
-
return (traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX) ||
|
|
35
|
-
traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX));
|
|
36
|
-
});
|
|
37
31
|
// Only proceed if there are filtered spans
|
|
38
|
-
if (
|
|
32
|
+
if (spans.length === 0) {
|
|
39
33
|
resultCallback({ code: 0 });
|
|
40
34
|
return;
|
|
41
35
|
}
|
|
42
36
|
if (this.usePostMessage) {
|
|
43
|
-
this.exportViaPostMessage(
|
|
37
|
+
this.exportViaPostMessage(spans, resultCallback);
|
|
44
38
|
return;
|
|
45
39
|
}
|
|
46
|
-
this.exporter.export(
|
|
40
|
+
this.exporter.export(spans, function (result) {
|
|
47
41
|
if (result.code === 0) {
|
|
48
42
|
resultCallback(result);
|
|
49
43
|
}
|
|
50
44
|
else if (_this.config.usePostMessageFallback) {
|
|
51
45
|
_this.usePostMessage = true;
|
|
52
|
-
_this.exportViaPostMessage(
|
|
46
|
+
_this.exportViaPostMessage(spans, resultCallback);
|
|
53
47
|
}
|
|
54
48
|
else {
|
|
55
49
|
resultCallback(result);
|
|
56
50
|
}
|
|
57
51
|
});
|
|
58
52
|
};
|
|
59
|
-
SessionRecorderBrowserTraceExporter.prototype.
|
|
60
|
-
|
|
53
|
+
SessionRecorderBrowserTraceExporter.prototype.export = function (spans, resultCallback) {
|
|
54
|
+
// Filter spans to only include those with Multiplayer trace prefixes
|
|
55
|
+
var filteredSpans = spans.filter(function (span) {
|
|
56
|
+
var traceId = span.spanContext().traceId;
|
|
57
|
+
return (traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX) ||
|
|
58
|
+
traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX));
|
|
59
|
+
});
|
|
60
|
+
this._export(filteredSpans, resultCallback);
|
|
61
61
|
};
|
|
62
|
-
SessionRecorderBrowserTraceExporter.prototype.exportBuffer = function (spans) {
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
resolve(result);
|
|
67
|
-
});
|
|
62
|
+
SessionRecorderBrowserTraceExporter.prototype.exportBuffer = function (spans, resultCallback) {
|
|
63
|
+
var filteredSpans = spans.filter(function (span) {
|
|
64
|
+
var traceId = span.spanContext().traceId;
|
|
65
|
+
return traceId.startsWith(MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX);
|
|
68
66
|
});
|
|
67
|
+
this._export(filteredSpans, resultCallback);
|
|
68
|
+
};
|
|
69
|
+
SessionRecorderBrowserTraceExporter.prototype.shutdown = function () {
|
|
70
|
+
return this.exporter.shutdown();
|
|
69
71
|
};
|
|
70
72
|
SessionRecorderBrowserTraceExporter.prototype.exportViaPostMessage = function (spans, resultCallback) {
|
|
71
73
|
var _this = this;
|
|
@@ -86,8 +88,42 @@ var SessionRecorderBrowserTraceExporter = /** @class */ (function () {
|
|
|
86
88
|
}
|
|
87
89
|
};
|
|
88
90
|
SessionRecorderBrowserTraceExporter.prototype.serializeSpan = function (span) {
|
|
91
|
+
var _a;
|
|
89
92
|
var spanContext = span.spanContext();
|
|
90
|
-
|
|
93
|
+
var instrumentationScope =
|
|
94
|
+
// OTel SDK (modern)
|
|
95
|
+
span.instrumentationScope ||
|
|
96
|
+
// Older SDKs
|
|
97
|
+
span.instrumentationLibrary || { name: 'unknown', version: undefined, schemaUrl: undefined };
|
|
98
|
+
var normalizedScope = {
|
|
99
|
+
name: (instrumentationScope === null || instrumentationScope === void 0 ? void 0 : instrumentationScope.name) || 'unknown',
|
|
100
|
+
version: instrumentationScope === null || instrumentationScope === void 0 ? void 0 : instrumentationScope.version,
|
|
101
|
+
schemaUrl: instrumentationScope === null || instrumentationScope === void 0 ? void 0 : instrumentationScope.schemaUrl,
|
|
102
|
+
};
|
|
103
|
+
return {
|
|
104
|
+
_spanContext: spanContext,
|
|
105
|
+
traceId: spanContext.traceId,
|
|
106
|
+
spanId: spanContext.spanId,
|
|
107
|
+
name: span.name,
|
|
108
|
+
kind: span.kind,
|
|
109
|
+
links: span.links,
|
|
110
|
+
ended: span.ended,
|
|
111
|
+
events: span.events,
|
|
112
|
+
status: span.status,
|
|
113
|
+
endTime: span.endTime,
|
|
114
|
+
startTime: span.startTime,
|
|
115
|
+
duration: span.duration,
|
|
116
|
+
attributes: span.attributes,
|
|
117
|
+
parentSpanId: (_a = span.parentSpanContext) === null || _a === void 0 ? void 0 : _a.spanId,
|
|
118
|
+
droppedAttributesCount: span.droppedAttributesCount,
|
|
119
|
+
droppedEventsCount: span.droppedEventsCount,
|
|
120
|
+
droppedLinksCount: span.droppedLinksCount,
|
|
121
|
+
instrumentationScope: normalizedScope,
|
|
122
|
+
resource: {
|
|
123
|
+
attributes: span.resource.attributes,
|
|
124
|
+
asyncAttributesPending: span.resource.asyncAttributesPending,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
91
127
|
};
|
|
92
128
|
SessionRecorderBrowserTraceExporter.prototype._createExporter = function () {
|
|
93
129
|
return new OTLPTraceExporter({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionRecorderBrowserTraceExporter.js","sourceRoot":"","sources":["../../../src/exporters/SessionRecorderBrowserTraceExporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base'\nimport { ExportResult } from '@opentelemetry/core'\n\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'\nimport {\n MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL,\n MULTIPLAYER_TRACE_DEBUG_PREFIX,\n MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX,\n} from '../constants/constants.base'\n\nexport interface SessionRecorderBrowserTraceExporterConfig {\n /** URL for the OTLP endpoint. Defaults to Multiplayer's default traces endpoint. */\n url?: string\n /** API key for authentication. Required. */\n apiKey?: string\n /** Additional headers to include in requests */\n headers?: Record<string, string>\n /** Request timeout in milliseconds */\n timeoutMillis?: number\n /** Whether to use keep-alive connections */\n keepAlive?: boolean\n /** Maximum number of concurrent requests */\n concurrencyLimit?: number\n /** Whether to use postMessage fallback for cross-origin requests */\n usePostMessageFallback?: boolean\n /** PostMessage type identifier */\n postMessageType?: string\n /** PostMessage target origin */\n postMessageTargetOrigin?: string\n}\n\n/**\n * Browser-specific trace exporter for Session Recorder\n * Exports traces via HTTP to Multiplayer's OTLP endpoint with browser-specific optimizations\n * Only exports spans with trace IDs starting with Multiplayer prefixes\n */\nexport class SessionRecorderBrowserTraceExporter implements SpanExporter {\n private exporter: OTLPTraceExporter\n private usePostMessage: boolean = false\n private readonly postMessageType: string\n private readonly postMessageTargetOrigin: string\n private readonly config: SessionRecorderBrowserTraceExporterConfig\n\n constructor(config: SessionRecorderBrowserTraceExporterConfig = {}) {\n const {\n url = MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL,\n apiKey,\n headers = {},\n timeoutMillis = 30000,\n keepAlive = true,\n concurrencyLimit = 20,\n postMessageType = 'MULTIPLAYER_SESSION_DEBUGGER_LIB',\n postMessageTargetOrigin = '*',\n } = config\n\n this.config = {\n ...config,\n url,\n apiKey,\n headers,\n keepAlive,\n timeoutMillis,\n concurrencyLimit,\n }\n this.postMessageType = postMessageType\n this.postMessageTargetOrigin = postMessageTargetOrigin\n\n this.exporter = this._createExporter()\n }\n\n export(spans: ReadableSpan[], resultCallback: (result: { code: number }) => void): void {\n // Filter spans to only include those with Multiplayer trace prefixes\n const filteredSpans = spans.filter((span) => {\n const traceId = span.spanContext().traceId\n return (\n traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX) ||\n traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)\n )\n })\n\n // Only proceed if there are filtered spans\n if (filteredSpans.length === 0) {\n resultCallback({ code: 0 })\n return\n }\n\n if (this.usePostMessage) {\n this.exportViaPostMessage(filteredSpans, resultCallback)\n return\n }\n\n this.exporter.export(filteredSpans, (result) => {\n if (result.code === 0) {\n resultCallback(result)\n } else if (this.config.usePostMessageFallback) {\n this.usePostMessage = true\n this.exportViaPostMessage(filteredSpans, resultCallback)\n } else {\n resultCallback(result)\n }\n })\n }\n\n shutdown(): Promise<void> {\n return this.exporter.shutdown()\n }\n\n exportBuffer(spans: ReadableSpan[]): Promise<ExportResult | undefined> {\n return new Promise((resolve) => {\n this.exporter.export(spans, (result) => {\n resolve(result)\n })\n })\n }\n\n private exportViaPostMessage(spans: ReadableSpan[], resultCallback: (result: { code: number }) => void): void {\n if (typeof window === 'undefined') {\n resultCallback({ code: 1 })\n return\n }\n\n try {\n window.postMessage(\n {\n action: 'traces',\n type: this.postMessageType,\n payload: spans.map((span) => this.serializeSpan(span)),\n },\n this.postMessageTargetOrigin,\n )\n resultCallback({ code: 0 })\n } catch (e) {\n resultCallback({ code: 1 })\n }\n }\n\n serializeSpan(span: ReadableSpan): any {\n const spanContext = span.spanContext()\n return {\n ...span,\n _spanContext: spanContext,\n }\n }\n\n private _createExporter(): OTLPTraceExporter {\n return new OTLPTraceExporter({\n url: this.config.url,\n headers: {\n 'Content-Type': 'application/json',\n ...(this.config.apiKey ? { Authorization: this.config.apiKey } : {}),\n ...(this.config.headers || {}),\n },\n timeoutMillis: this.config.timeoutMillis,\n keepAlive: this.config.keepAlive,\n concurrencyLimit: this.config.concurrencyLimit,\n })\n }\n\n setApiKey(apiKey: string): void {\n this.config.apiKey = apiKey\n this.exporter = this._createExporter()\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SessionRecorderBrowserTraceExporter.js","sourceRoot":"","sources":["../../../src/exporters/SessionRecorderBrowserTraceExporter.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base'\n\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'\nimport {\n MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL,\n MULTIPLAYER_TRACE_DEBUG_PREFIX,\n MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX,\n MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX,\n} from '../constants/constants.base'\n\nexport interface SessionRecorderBrowserTraceExporterConfig {\n /** URL for the OTLP endpoint. Defaults to Multiplayer's default traces endpoint. */\n url?: string\n /** API key for authentication. Required. */\n apiKey?: string\n /** Additional headers to include in requests */\n headers?: Record<string, string>\n /** Request timeout in milliseconds */\n timeoutMillis?: number\n /** Whether to use keep-alive connections */\n keepAlive?: boolean\n /** Maximum number of concurrent requests */\n concurrencyLimit?: number\n /** Whether to use postMessage fallback for cross-origin requests */\n usePostMessageFallback?: boolean\n /** PostMessage type identifier */\n postMessageType?: string\n /** PostMessage target origin */\n postMessageTargetOrigin?: string\n}\n\n/**\n * Browser-specific trace exporter for Session Recorder\n * Exports traces via HTTP to Multiplayer's OTLP endpoint with browser-specific optimizations\n * Only exports spans with trace IDs starting with Multiplayer prefixes\n */\nexport class SessionRecorderBrowserTraceExporter implements SpanExporter {\n private exporter: OTLPTraceExporter\n private usePostMessage: boolean = false\n private readonly postMessageType: string\n private readonly postMessageTargetOrigin: string\n private readonly config: SessionRecorderBrowserTraceExporterConfig\n\n constructor(config: SessionRecorderBrowserTraceExporterConfig = {}) {\n const {\n url = MULTIPLAYER_OTEL_DEFAULT_TRACES_EXPORTER_HTTP_URL,\n apiKey,\n headers = {},\n timeoutMillis = 30000,\n keepAlive = true,\n concurrencyLimit = 20,\n postMessageType = 'MULTIPLAYER_SESSION_DEBUGGER_LIB',\n postMessageTargetOrigin = '*',\n } = config\n\n this.config = {\n ...config,\n url,\n apiKey,\n headers,\n keepAlive,\n timeoutMillis,\n concurrencyLimit,\n }\n this.postMessageType = postMessageType\n this.postMessageTargetOrigin = postMessageTargetOrigin\n\n this.exporter = this._createExporter()\n }\n _export(spans: ReadableSpan[], resultCallback: (result: { code: number }) => void): void {\n // Only proceed if there are filtered spans\n if (spans.length === 0) {\n resultCallback({ code: 0 })\n return\n }\n\n if (this.usePostMessage) {\n this.exportViaPostMessage(spans, resultCallback)\n return\n }\n\n this.exporter.export(spans, (result) => {\n if (result.code === 0) {\n resultCallback(result)\n } else if (this.config.usePostMessageFallback) {\n this.usePostMessage = true\n this.exportViaPostMessage(spans, resultCallback)\n } else {\n resultCallback(result)\n }\n })\n }\n\n export(spans: ReadableSpan[], resultCallback: (result: { code: number }) => void): void {\n // Filter spans to only include those with Multiplayer trace prefixes\n const filteredSpans = spans.filter((span) => {\n const traceId = span.spanContext().traceId\n return (\n traceId.startsWith(MULTIPLAYER_TRACE_DEBUG_PREFIX) ||\n traceId.startsWith(MULTIPLAYER_TRACE_CONTINUOUS_DEBUG_PREFIX)\n )\n })\n this._export(filteredSpans, resultCallback)\n }\n\n exportBuffer(spans: ReadableSpan[], resultCallback: (result: { code: number }) => void): void {\n const filteredSpans = spans.filter((span) => {\n const traceId = span.spanContext().traceId\n return traceId.startsWith(MULTIPLAYER_TRACE_SESSION_CACHE_PREFIX)\n })\n this._export(filteredSpans, resultCallback)\n }\n\n shutdown(): Promise<void> {\n return this.exporter.shutdown()\n }\n\n private exportViaPostMessage(spans: ReadableSpan[], resultCallback: (result: { code: number }) => void): void {\n if (typeof window === 'undefined') {\n resultCallback({ code: 1 })\n return\n }\n\n try {\n window.postMessage(\n {\n action: 'traces',\n type: this.postMessageType,\n payload: spans.map((span) => this.serializeSpan(span)),\n },\n this.postMessageTargetOrigin,\n )\n resultCallback({ code: 0 })\n } catch (e) {\n resultCallback({ code: 1 })\n }\n }\n\n serializeSpan(span: ReadableSpan): any {\n const spanContext = span.spanContext()\n const instrumentationScope: any =\n // OTel SDK (modern)\n (span as any).instrumentationScope ||\n // Older SDKs\n (span as any).instrumentationLibrary || { name: 'unknown', version: undefined, schemaUrl: undefined }\n\n const normalizedScope = {\n name: instrumentationScope?.name || 'unknown',\n version: instrumentationScope?.version,\n schemaUrl: instrumentationScope?.schemaUrl,\n }\n return {\n _spanContext: spanContext,\n traceId: spanContext.traceId,\n spanId: spanContext.spanId,\n name: span.name,\n kind: span.kind,\n links: span.links,\n ended: span.ended,\n events: span.events,\n status: span.status,\n endTime: span.endTime,\n startTime: span.startTime,\n duration: span.duration,\n attributes: span.attributes,\n parentSpanId: span.parentSpanContext?.spanId,\n droppedAttributesCount: span.droppedAttributesCount,\n droppedEventsCount: span.droppedEventsCount,\n droppedLinksCount: span.droppedLinksCount,\n instrumentationScope: normalizedScope,\n resource: {\n attributes: span.resource.attributes,\n asyncAttributesPending: span.resource.asyncAttributesPending,\n },\n }\n }\n\n private _createExporter(): OTLPTraceExporter {\n return new OTLPTraceExporter({\n url: this.config.url,\n headers: {\n 'Content-Type': 'application/json',\n ...(this.config.apiKey ? { Authorization: this.config.apiKey } : {}),\n ...(this.config.headers || {}),\n },\n timeoutMillis: this.config.timeoutMillis,\n keepAlive: this.config.keepAlive,\n concurrencyLimit: this.config.concurrencyLimit,\n })\n }\n\n setApiKey(apiKey: string): void {\n this.config.apiKey = apiKey\n this.exporter = this._createExporter()\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-exception.d.ts","sourceRoot":"","sources":["../../../src/sdk/capture-exception.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capture-exception.d.ts","sourceRoot":"","sources":["../../../src/sdk/capture-exception.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,OAAO,KAAK,EACZ,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SAgDhC,CAAA"}
|
|
@@ -1,19 +1,73 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
13
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
14
|
+
if (!m) return o;
|
|
15
|
+
var i = m.call(o), r, ar = [], e;
|
|
16
|
+
try {
|
|
17
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
18
|
+
}
|
|
19
|
+
catch (error) { e = { error: error }; }
|
|
20
|
+
finally {
|
|
21
|
+
try {
|
|
22
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
23
|
+
}
|
|
24
|
+
finally { if (e) throw e.error; }
|
|
25
|
+
}
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
1
28
|
import { context, trace, SpanStatusCode } from '@opentelemetry/api';
|
|
29
|
+
import { ATTR_EXCEPTION_MESSAGE, ATTR_EXCEPTION_STACKTRACE, ATTR_EXCEPTION_TYPE, } from '@opentelemetry/semantic-conventions';
|
|
30
|
+
import { getResourceAttributes } from './set-resource-attributes';
|
|
2
31
|
/**
|
|
3
32
|
* @description Add error to current span
|
|
4
33
|
* @param {Error} error
|
|
5
34
|
* @returns {void}
|
|
6
35
|
*/
|
|
7
|
-
export var captureException = function (error) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
var span = trace.getSpan(context.active());
|
|
11
|
-
if (!span)
|
|
36
|
+
export var captureException = function (error, errorInfo) {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
if (!error) {
|
|
12
39
|
return;
|
|
40
|
+
}
|
|
41
|
+
var activeContext = context.active();
|
|
42
|
+
var span = trace.getSpan(activeContext);
|
|
43
|
+
var isNewSpan = false;
|
|
44
|
+
if (!span || !span.isRecording()) {
|
|
45
|
+
span = trace.getTracer('exception').startSpan(error.name || 'Error', {
|
|
46
|
+
attributes: __assign((_a = {}, _a[ATTR_EXCEPTION_MESSAGE] = error.message, _a[ATTR_EXCEPTION_STACKTRACE] = error.stack, _a[ATTR_EXCEPTION_TYPE] = error.name, _a), getResourceAttributes()),
|
|
47
|
+
});
|
|
48
|
+
trace.setSpan(activeContext, span);
|
|
49
|
+
isNewSpan = true;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
span.setAttributes((_b = {},
|
|
53
|
+
_b[ATTR_EXCEPTION_MESSAGE] = error.message,
|
|
54
|
+
_b[ATTR_EXCEPTION_STACKTRACE] = error.stack,
|
|
55
|
+
_b[ATTR_EXCEPTION_TYPE] = error.name,
|
|
56
|
+
_b));
|
|
57
|
+
}
|
|
58
|
+
if (errorInfo) {
|
|
59
|
+
Object.entries(errorInfo).forEach(function (_a) {
|
|
60
|
+
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
61
|
+
span.setAttribute("error_info.".concat(key), value);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
13
64
|
span.recordException(error);
|
|
14
65
|
span.setStatus({
|
|
15
66
|
code: SpanStatusCode.ERROR,
|
|
16
67
|
message: error.message,
|
|
17
68
|
});
|
|
69
|
+
if (isNewSpan) {
|
|
70
|
+
span.end();
|
|
71
|
+
}
|
|
18
72
|
};
|
|
19
73
|
//# sourceMappingURL=capture-exception.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-exception.js","sourceRoot":"","sources":["../../../src/sdk/capture-exception.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"capture-exception.js","sourceRoot":"","sources":["../../../src/sdk/capture-exception.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,qCAAqC,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AAEjE;;;;GAIG;AACH,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAC9B,KAAY,EACZ,SAA+B;;IAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAM;IACR,CAAC;IAED,IAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;IAEtC,IAAI,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;IACvC,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACjC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,SAAS,CAC3C,KAAK,CAAC,IAAI,IAAI,OAAO,EACrB;YACE,UAAU,wBACP,sBAAsB,IAAG,KAAK,CAAC,OAAO,KACtC,yBAAyB,IAAG,KAAK,CAAC,KAAK,KACvC,mBAAmB,IAAG,KAAK,CAAC,IAAI,OAC9B,qBAAqB,EAAE,CAC3B;SACF,CACF,CAAA;QACD,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;QAClC,SAAS,GAAG,IAAI,CAAA;IAClB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,aAAa;YAChB,GAAC,sBAAsB,IAAG,KAAK,CAAC,OAAO;YACvC,GAAC,yBAAyB,IAAG,KAAK,CAAC,KAAK;YACxC,GAAC,mBAAmB,IAAG,KAAK,CAAC,IAAI;gBACjC,CAAA;IACJ,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,UAAC,EAAY;gBAAZ,KAAA,aAAY,EAAX,GAAG,QAAA,EAAE,KAAK,QAAA;YAC5C,IAAI,CAAC,YAAY,CAAC,qBAAc,GAAG,CAAE,EAAE,KAAK,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3B,IAAI,CAAC,SAAS,CAAC;QACb,IAAI,EAAE,cAAc,CAAC,KAAK;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC,CAAA;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC,GAAG,EAAE,CAAA;IACZ,CAAC;AACH,CAAC,CAAA","sourcesContent":["import { context, trace, SpanStatusCode } from '@opentelemetry/api'\nimport {\n ATTR_EXCEPTION_MESSAGE,\n ATTR_EXCEPTION_STACKTRACE,\n ATTR_EXCEPTION_TYPE,\n} from '@opentelemetry/semantic-conventions'\nimport { getResourceAttributes } from './set-resource-attributes'\n\n/**\n * @description Add error to current span\n * @param {Error} error\n * @returns {void}\n */\nexport const captureException = (\n error: Error,\n errorInfo?: Record<string, any>,\n) => {\n if (!error) {\n return\n }\n\n const activeContext = context.active()\n\n let span = trace.getSpan(activeContext)\n let isNewSpan = false\n\n if (!span || !span.isRecording()) {\n span = trace.getTracer('exception').startSpan(\n error.name || 'Error',\n {\n attributes: {\n [ATTR_EXCEPTION_MESSAGE]: error.message,\n [ATTR_EXCEPTION_STACKTRACE]: error.stack,\n [ATTR_EXCEPTION_TYPE]: error.name,\n ...getResourceAttributes(),\n },\n },\n )\n trace.setSpan(activeContext, span)\n isNewSpan = true\n } else {\n span.setAttributes({\n [ATTR_EXCEPTION_MESSAGE]: error.message,\n [ATTR_EXCEPTION_STACKTRACE]: error.stack,\n [ATTR_EXCEPTION_TYPE]: error.name,\n })\n }\n\n if (errorInfo) {\n Object.entries(errorInfo).forEach(([key, value]) => {\n span.setAttribute(`error_info.${key}`, value)\n })\n }\n\n span.recordException(error)\n span.setStatus({\n code: SpanStatusCode.ERROR,\n message: error.message,\n })\n\n if (isNewSpan) {\n span.end()\n }\n}\n"]}
|
package/dist/esm/sdk/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA"}
|
package/dist/esm/sdk/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA","sourcesContent":["export { default as mask, sensitiveFields, sensitiveHeaders } from './mask'\nexport { default as schemify } from './schemify'\nexport * from './is-gzip'\nexport * from './id-generator'\nexport * from './capture-exception'\nexport * from './set-attribute'\nexport * from './save-continuous-deb-session'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sdk/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAA;AAChD,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA","sourcesContent":["export { default as mask, sensitiveFields, sensitiveHeaders } from './mask'\nexport { default as schemify } from './schemify'\nexport * from './is-gzip'\nexport * from './id-generator'\nexport * from './capture-exception'\nexport * from './set-attribute'\nexport * from './save-continuous-deb-session'\nexport * from './set-resource-attributes'\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-resource-attributes.d.ts","sourceRoot":"","sources":["../../../src/sdk/set-resource-attributes.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,GAAI,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SAEpE,CAAA;AAED,eAAO,MAAM,qBAAqB,2BAEjC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
var resourceAttributes = {};
|
|
2
|
+
export var setResourceAttributes = function (attributes) {
|
|
3
|
+
resourceAttributes = attributes;
|
|
4
|
+
};
|
|
5
|
+
export var getResourceAttributes = function () {
|
|
6
|
+
return resourceAttributes;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=set-resource-attributes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-resource-attributes.js","sourceRoot":"","sources":["../../../src/sdk/set-resource-attributes.ts"],"names":[],"mappings":"AAAA,IAAI,kBAAkB,GAAwB,EAAE,CAAA;AAEhD,MAAM,CAAC,IAAM,qBAAqB,GAAG,UAAC,UAA+B;IACnE,kBAAkB,GAAG,UAAU,CAAA;AACjC,CAAC,CAAA;AAED,MAAM,CAAC,IAAM,qBAAqB,GAAG;IACnC,OAAO,kBAAkB,CAAA;AAC3B,CAAC,CAAA","sourcesContent":["let resourceAttributes: Record<string, any> = {}\n\nexport const setResourceAttributes = (attributes: Record<string, any>) => {\n resourceAttributes = attributes\n}\n\nexport const getResourceAttributes = () => {\n return resourceAttributes\n}\n"]}
|