UNPKG

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