76 lines
2.7 KiB
JavaScript
Raw Normal View History

2022-07-12 09:00:22 +02:00
/*
* 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';
2023-02-22 17:47:24 -08:00
var contextApi = ContextAPI.getInstance();
2022-07-12 09:00:22 +02:00
/**
* No-op implementations of {@link Tracer}.
*/
var NoopTracer = /** @class */ (function () {
function NoopTracer() {
}
// startSpan starts a noop span.
NoopTracer.prototype.startSpan = function (name, options, context) {
2023-02-22 17:47:24 -08:00
if (context === void 0) { context = contextApi.active(); }
2022-07-12 09:00:22 +02:00
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;
}
2023-02-22 17:47:24 -08:00
var parentContext = ctx !== null && ctx !== void 0 ? ctx : contextApi.active();
2022-07-12 09:00:22 +02:00
var span = this.startSpan(name, opts, parentContext);
var contextWithSpanSet = setSpan(parentContext, span);
2023-02-22 17:47:24 -08:00
return contextApi.with(contextWithSpanSet, fn, undefined, span);
2022-07-12 09:00:22 +02:00
};
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