UNPKG

@aikidosec/firewall

Version:

Zen by Aikido is an embedded Web Application Firewall that autonomously protects Node.js apps against common and critical attacks

42 lines (41 loc) 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractTopLevelFieldsFromDocument = extractTopLevelFieldsFromDocument; function extractTopLevelFieldsFromDocument(document, operationName) { const operations = document.definitions.filter(isOperationDefinition); if (operations.length === 0) { return undefined; } if (!operationName && operations.length === 1) { return extractFields(operations[0]); } if (operationName) { const operation = operations.find((operation) => { var _a; return ((_a = operation.name) === null || _a === void 0 ? void 0 : _a.value) === operationName; }); if (operation) { return extractFields(operation); } } return undefined; } function extractFields(node) { const fields = node.selectionSet.selections.filter(isField); if (node.operation === "query") { return { type: "query", fields: fields, }; } if (node.operation === "mutation") { return { type: "mutation", fields: fields, }; } return undefined; } function isField(node) { return node.kind === "Field"; } function isOperationDefinition(node) { return node.kind === "OperationDefinition"; }