1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- import { context, SpanStatusCode } from '../../';
- var defaultOnException = function (e, span) {
- span.recordException(e);
- span.setStatus({
- code: SpanStatusCode.ERROR,
- });
- };
- /**
- * return a new SugaredTracer created from the supplied one
- * @param tracer
- */
- export function wrapTracer(tracer) {
- return new SugaredTracer(tracer);
- }
- var SugaredTracer = /** @class */ (function () {
- function SugaredTracer(tracer) {
- this._tracer = tracer;
- this.startSpan = tracer.startSpan.bind(this._tracer);
- this.startActiveSpan = tracer.startActiveSpan.bind(this._tracer);
- }
- SugaredTracer.prototype.withActiveSpan = function (name, arg2, arg3, arg4) {
- var _a = massageParams(arg2, arg3, arg4), opts = _a.opts, ctx = _a.ctx, fn = _a.fn;
- return this._tracer.startActiveSpan(name, opts, ctx, function (span) {
- return handleFn(span, opts, fn);
- });
- };
- SugaredTracer.prototype.withSpan = function (name, arg2, arg3, arg4) {
- var _a = massageParams(arg2, arg3, arg4), opts = _a.opts, ctx = _a.ctx, fn = _a.fn;
- var span = this._tracer.startSpan(name, opts, ctx);
- return handleFn(span, opts, fn);
- };
- return SugaredTracer;
- }());
- export { SugaredTracer };
- /**
- * Massages parameters of withSpan and withActiveSpan to allow signature overwrites
- * @param arg
- * @param arg2
- * @param arg3
- */
- function massageParams(arg, arg2, arg3) {
- var opts;
- var ctx;
- var fn;
- if (!arg2 && !arg3) {
- fn = arg;
- }
- else if (!arg3) {
- opts = arg;
- fn = arg2;
- }
- else {
- opts = arg;
- ctx = arg2;
- fn = arg3;
- }
- opts = opts !== null && opts !== void 0 ? opts : {};
- ctx = ctx !== null && ctx !== void 0 ? ctx : context.active();
- return { opts: opts, ctx: ctx, fn: fn };
- }
- /**
- * Executes fn, returns results and runs onException in the case of exception to allow overwriting of error handling
- * @param span
- * @param opts
- * @param fn
- */
- function handleFn(span, opts, fn) {
- var _a;
- var onException = (_a = opts.onException) !== null && _a !== void 0 ? _a : defaultOnException;
- var errorHandler = function (e) {
- onException(e, span);
- span.end();
- throw e;
- };
- try {
- var ret = fn(span);
- // if fn is an async function, attach a recordException and spanEnd callback to the promise
- if (typeof (ret === null || ret === void 0 ? void 0 : ret.then) === 'function') {
- return ret.then(function (val) {
- span.end();
- return val;
- }, errorHandler);
- }
- span.end();
- return ret;
- }
- catch (e) {
- // add throw to signal the compiler that this will throw in the inner scope
- throw errorHandler(e);
- }
- }
- //# sourceMappingURL=SugaredTracer.js.map
|