UNPKG

autotel

Version:
45 lines (43 loc) 1.76 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_config = require('./config.cjs'); const require_track = require('./track-Cb3Q4QmS.cjs'); let _opentelemetry_api = require("@opentelemetry/api"); //#region src/decorators.ts function Trace(nameOrOptions, maybeOptions) { const name = typeof nameOrOptions === "string" ? nameOrOptions : nameOrOptions?.name; return function(originalMethod, context) { const methodName = String(context.name); const methodStr = originalMethod?.toString() || ""; if (!(originalMethod && (originalMethod.constructor?.name === "AsyncFunction" || methodStr.trim().startsWith("async ") || methodStr.includes("[native code]") && methodStr.includes("async") || /async\s+/.test(methodStr)))) return originalMethod; const spanName = name || methodName; return async function(...args) { return require_config.getConfig().tracer.startActiveSpan(spanName, async (span) => { try { const ctx = require_track.createTraceContext(span); const originalCtx = this.ctx; try { this.ctx = ctx; const result = await originalMethod.apply(this, args); span.setStatus({ code: _opentelemetry_api.SpanStatusCode.OK }); return result; } finally { if (originalCtx === void 0) delete this.ctx; else this.ctx = originalCtx; } } catch (error) { span.setStatus({ code: _opentelemetry_api.SpanStatusCode.ERROR, message: error instanceof Error ? error.message : "Unknown error" }); span.recordException(error instanceof Error ? error : new Error(String(error))); throw error; } finally { span.end(); } }); }; }; } //#endregion exports.Trace = Trace; //# sourceMappingURL=decorators.cjs.map