123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.plugin = void 0;
- const graphql_1 = require("graphql");
- const { name: PACKAGE_NAME } = require("../package.json");
- exports.plugin = (_futureOptions = {}) => () => ({
- requestDidStart() {
- const startWallTime = new Date();
- let endWallTime;
- const startHrTime = process.hrtime();
- let duration;
- const resolverCalls = [];
- return {
- executionDidStart: () => ({
- executionDidEnd: () => {
- duration = process.hrtime(startHrTime);
- endWallTime = new Date();
- },
- willResolveField({ info }) {
- const resolverCall = {
- path: info.path,
- fieldName: info.fieldName,
- parentType: info.parentType,
- returnType: info.returnType,
- startOffset: process.hrtime(startHrTime),
- };
- resolverCalls.push(resolverCall);
- return () => {
- resolverCall.endOffset = process.hrtime(startHrTime);
- };
- },
- }),
- willSendResponse({ response }) {
- if (typeof endWallTime === 'undefined' ||
- typeof duration === 'undefined') {
- return;
- }
- const extensions = response.extensions || (response.extensions = Object.create(null));
- if (typeof extensions.tracing !== 'undefined') {
- throw new Error(PACKAGE_NAME + ": Could not add `tracing` to " +
- "`extensions` since `tracing` was unexpectedly already present.");
- }
- extensions.tracing = {
- version: 1,
- startTime: startWallTime.toISOString(),
- endTime: endWallTime.toISOString(),
- duration: durationHrTimeToNanos(duration),
- execution: {
- resolvers: resolverCalls.map(resolverCall => {
- const startOffset = durationHrTimeToNanos(resolverCall.startOffset);
- const duration = resolverCall.endOffset
- ? durationHrTimeToNanos(resolverCall.endOffset) - startOffset
- : 0;
- return {
- path: [...graphql_1.responsePathAsArray(resolverCall.path)],
- parentType: resolverCall.parentType.toString(),
- fieldName: resolverCall.fieldName,
- returnType: resolverCall.returnType.toString(),
- startOffset,
- duration,
- };
- }),
- },
- };
- },
- };
- },
- });
- function durationHrTimeToNanos(hrtime) {
- return hrtime[0] * 1e9 + hrtime[1];
- }
- //# sourceMappingURL=index.js.map
|