UNPKG

@backstage/plugin-catalog-backend

Version:

The Backstage backend plugin that provides the Backstage catalog

67 lines (63 loc) 1.67 kB
'use strict'; var api = require('@opentelemetry/api'); const TRACER_ID = "backstage-plugin-catalog-backend"; function setAttributeIfDefined(span, attribute, value) { if (value !== null && value !== void 0) { span.setAttribute(attribute, value); } } function addEntityAttributes(span, entity) { setAttributeIfDefined(span, "backstage.entity.apiVersion", entity.apiVersion); setAttributeIfDefined(span, "backstage.entity.kind", entity.kind); setAttributeIfDefined( span, "backstage.entity.metadata.namespace", entity.metadata?.namespace ); setAttributeIfDefined( span, "backstage.entity.metadata.name", entity.metadata?.name ); } const onException = (e, span) => { span.recordException(e); span.setStatus({ code: api.SpanStatusCode.ERROR }); }; function isPromiseLike(obj) { return !!obj && (typeof obj === "object" || typeof obj === "function") && "then" in obj && typeof obj.then === "function"; } function handleFn(span, fn) { try { const ret = fn(span); if (isPromiseLike(ret)) { ret.then( () => { span.end(); }, (e) => { onException(e, span); span.end(); } ); } else { span.end(); } return ret; } catch (e) { onException(e, span); span.end(); throw e; } } function withActiveSpan(tracer, name, fn, spanOptions = {}) { return tracer.startActiveSpan(name, spanOptions, (span) => { return handleFn(span, fn); }); } exports.TRACER_ID = TRACER_ID; exports.addEntityAttributes = addEntityAttributes; exports.withActiveSpan = withActiveSpan; //# sourceMappingURL=opentelemetry.cjs.js.map