Files
Job_App/node_modules/apollo-tracing/dist/index.js
2025-03-28 12:30:19 +11:00

72 lines
3.1 KiB
JavaScript

"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