@backstage/plugin-catalog-backend
Version:
The Backstage backend plugin that provides the Backstage catalog
67 lines (63 loc) • 1.67 kB
JavaScript
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
;