@opentelemetry/api
Version:
Public API for OpenTelemetry
44 lines (43 loc) • 1.78 kB
JavaScript
import { ContextAPI } from "../api/context.mjs";
import { NonRecordingSpan } from "./NonRecordingSpan.mjs";
import { getSpanContext, setSpan } from "./context-utils.mjs";
import { isSpanContextValid } from "./spancontext-utils.mjs";
//#region src/trace/NoopTracer.ts
const contextApi = ContextAPI.getInstance();
/**
* No-op implementations of {@link Tracer}.
*/
var NoopTracer = class {
startSpan(name, options, context = contextApi.active()) {
if (Boolean(options === null || options === void 0 ? void 0 : options.root)) return new NonRecordingSpan();
const parentFromContext = context && getSpanContext(context);
if (isSpanContext(parentFromContext) && isSpanContextValid(parentFromContext)) return new NonRecordingSpan(parentFromContext);
else return new NonRecordingSpan();
}
startActiveSpan(name, arg2, arg3, arg4) {
var _ctx;
let opts;
let ctx;
let fn;
if (arguments.length < 2) return;
else if (arguments.length === 2) fn = arg2;
else if (arguments.length === 3) {
opts = arg2;
fn = arg3;
} else {
opts = arg2;
ctx = arg3;
fn = arg4;
}
const parentContext = (_ctx = ctx) !== null && _ctx !== void 0 ? _ctx : contextApi.active();
const span = this.startSpan(name, opts, parentContext);
const contextWithSpanSet = setSpan(parentContext, span);
return contextApi.with(contextWithSpanSet, fn, void 0, span);
}
};
function isSpanContext(spanContext) {
return spanContext !== null && typeof spanContext === "object" && "spanId" in spanContext && typeof spanContext["spanId"] === "string" && "traceId" in spanContext && typeof spanContext["traceId"] === "string" && "traceFlags" in spanContext && typeof spanContext["traceFlags"] === "number";
}
//#endregion
export { NoopTracer };
//# sourceMappingURL=NoopTracer.mjs.map