UNPKG

@grafana/faro-web-tracing

Version:
69 lines 3.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.sendFaroEvents = sendFaroEvents; var internal_types_1 = require("@opentelemetry/otlp-transformer/build/src/trace/internal-types"); var faro_web_sdk_1 = require("@grafana/faro-web-sdk"); var DURATION_NS_KEY = 'duration_ns'; function sendFaroEvents(resourceSpans) { var _a, _b; if (resourceSpans === void 0) { resourceSpans = []; } for (var _i = 0, resourceSpans_1 = resourceSpans; _i < resourceSpans_1.length; _i++) { var resourceSpan = resourceSpans_1[_i]; var scopeSpans = resourceSpan.scopeSpans; for (var _c = 0, scopeSpans_1 = scopeSpans; _c < scopeSpans_1.length; _c++) { var scopeSpan = scopeSpans_1[_c]; var scope = scopeSpan.scope, _d = scopeSpan.spans, spans = _d === void 0 ? [] : _d; var _loop_1 = function (span) { if (span.kind !== internal_types_1.ESpanKind.SPAN_KIND_CLIENT) { return "continue"; } var spanContext = { traceId: span.traceId.toString(), spanId: span.spanId.toString(), }; var faroEventAttributes = {}; for (var _f = 0, _g = span.attributes; _f < _g.length; _f++) { var attribute = _g[_f]; faroEventAttributes[attribute.key] = String(Object.values(attribute.value)[0]); } // Add span duration in nanoseconds if (!Number.isNaN(span.endTimeUnixNano) && !Number.isNaN(span.startTimeUnixNano)) { faroEventAttributes[DURATION_NS_KEY] = String(Number(span.endTimeUnixNano) - Number(span.startTimeUnixNano)); } var index = ((_a = scope === null || scope === void 0 ? void 0 : scope.name) !== null && _a !== void 0 ? _a : '').indexOf('-'); var eventName = faro_web_sdk_1.unknownString; if (scope === null || scope === void 0 ? void 0 : scope.name) { if (index === -1) { eventName = (_b = scope.name.split('/')[1]) !== null && _b !== void 0 ? _b : scope.name; } if (index > -1) { eventName = scope === null || scope === void 0 ? void 0 : scope.name.substring(index + 1); } } faro_web_sdk_1.faro.api.pushEvent("faro.tracing.".concat(eventName), faroEventAttributes, undefined, { spanContext: spanContext, // Convert nanoseconds to milliseconds timestampOverwriteMs: Number(span.endTimeUnixNano) / 1000000, customPayloadTransformer: function (payload) { var _a, _b; if (faroEventAttributes['faro.action.user.name'] != null && faroEventAttributes['faro.action.user.parentId'] != null) { payload.action = { name: faroEventAttributes['faro.action.user.name'], parentId: faroEventAttributes['faro.action.user.parentId'], }; (_a = payload.attributes) === null || _a === void 0 ? true : delete _a['faro.action.user.name']; (_b = payload.attributes) === null || _b === void 0 ? true : delete _b['faro.action.user.parentId']; } return payload; }, }); }; for (var _e = 0, spans_1 = spans; _e < spans_1.length; _e++) { var span = spans_1[_e]; _loop_1(span); } } } } //# sourceMappingURL=faroTraceExporter.utils.js.map