UNPKG

@opentelemetry/api

Version:
44 lines (43 loc) • 1.78 kB
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