in lib/instrumentation/modules/graphql.js [207:255]
function extractDetails(document, operationName) {
var queries = [];
var operation;
if (document && Array.isArray(document.definitions)) {
document.definitions.some(function (definition) {
if (
!definition ||
definition.kind !== graphql.Kind.OPERATION_DEFINITION
)
return false;
if (!operationName && operation) return false;
if (
!operationName ||
(definition.name && definition.name.value === operationName)
) {
operation = definition;
return true;
}
return false;
});
var selections =
operation &&
operation.selectionSet &&
operation.selectionSet.selections;
if (selections && Array.isArray(selections)) {
for (const selection of selections) {
const kind = selection.name && selection.name.kind;
if (kind === graphql.Kind.NAME) {
const queryName = selection.name.value;
if (queryName) queries.push(queryName);
}
}
queries = queries.sort(function (a, b) {
if (a > b) return 1;
else if (a < b) return -1;
return 0;
});
}
} else {
agent.logger.debug(
'unexpected document format - skipping graphql query extraction',
);
}
return { queries, operation };
}