/* * Copyright The OpenTelemetry Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { ContextAPI } from '../api/context'; import { getSpanContext, setSpan } from '../trace/context-utils'; import { NonRecordingSpan } from './NonRecordingSpan'; import { isSpanContextValid } from './spancontext-utils'; var context = ContextAPI.getInstance(); /** * No-op implementations of {@link Tracer}. */ var NoopTracer = /** @class */ (function () { function NoopTracer() { } // startSpan starts a noop span. NoopTracer.prototype.startSpan = function (name, options, context) { var root = Boolean(options === null || options === void 0 ? void 0 : options.root); if (root) { return new NonRecordingSpan(); } var parentFromContext = context && getSpanContext(context); if (isSpanContext(parentFromContext) && isSpanContextValid(parentFromContext)) { return new NonRecordingSpan(parentFromContext); } else { return new NonRecordingSpan(); } }; NoopTracer.prototype.startActiveSpan = function (name, arg2, arg3, arg4) { var opts; var ctx; var 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; } var parentContext = ctx !== null && ctx !== void 0 ? ctx : context.active(); var span = this.startSpan(name, opts, parentContext); var contextWithSpanSet = setSpan(parentContext, span); return context.with(contextWithSpanSet, fn, undefined, span); }; return NoopTracer; }()); export { NoopTracer }; function isSpanContext(spanContext) { return (typeof spanContext === 'object' && typeof spanContext['spanId'] === 'string' && typeof spanContext['traceId'] === 'string' && typeof spanContext['traceFlags'] === 'number'); } //# sourceMappingURL=NoopTracer.js.map