1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.openCensusTracingGraphQLMiddleware = exports.openCensusSpanMap = exports.openCensusTracer = void 0;
|
4 | const core_1 = require("@opencensus/core");
|
5 | exports.openCensusTracer = Symbol("OpenCensus Tracer");
|
6 | exports.openCensusSpanMap = Symbol("OpenCensus Span Map");
|
7 | async 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 | }
|
42 | exports.openCensusTracingGraphQLMiddleware = openCensusTracingGraphQLMiddleware;
|
43 |
|
\ | No newline at end of file |