UNPKG

1.41 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const core_1 = require("@opencensus/core");
4exports.openCensusTracer = Symbol("OpenCensus Tracer");
5exports.openCensusSpanMap = Symbol("OpenCensus Span Map");
6async function openCensusTracingGraphQLMiddleware(resolve, parent, args, context, info) {
7 const tracer = context[exports.openCensusTracer];
8 if (!tracer || !tracer.currentRootSpan) {
9 return resolve(parent, args, context, info);
10 }
11 let span;
12 const spanMap = (context[exports.openCensusSpanMap] =
13 context[exports.openCensusSpanMap] || new Map());
14 const parentSpan = info.path.prev && spanMap.get(info.path.prev);
15 if (parentSpan) {
16 span = tracer.startChildSpan({
17 name: info.fieldName,
18 kind: core_1.SpanKind.UNSPECIFIED,
19 childOf: parentSpan
20 });
21 span.addAttribute("parentId", (parent && parent.id) || null);
22 span.addAttribute("parentType", info.parentType.toString());
23 span.addAttribute("fieldName", info.fieldName);
24 span.addAttribute("returnType", info.returnType.toString());
25 }
26 try {
27 return await resolve(parent, args, context, info);
28 }
29 finally {
30 if (span)
31 span.end();
32 }
33}
34exports.openCensusTracingGraphQLMiddleware = openCensusTracingGraphQLMiddleware;
35//# sourceMappingURL=openCensusTracing.js.map
\No newline at end of file