@apollo/federation
Version:
Apollo Federation Utilities
32 lines • 1.32 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.reservedFieldUsed = void 0;
const graphql_1 = require("graphql");
const utils_1 = require("../../utils");
const reservedFieldUsed = ({ name: serviceName, typeDefs, }) => {
const errors = [];
let rootQueryName = 'Query';
(0, graphql_1.visit)(typeDefs, {
OperationTypeDefinition(node) {
if (node.operation === 'query') {
rootQueryName = node.type.name.value;
}
},
});
(0, graphql_1.visit)(typeDefs, {
ObjectTypeDefinition(node) {
if (node.name.value === rootQueryName && node.fields) {
for (const field of node.fields) {
const { value: fieldName } = field.name;
if (utils_1.reservedRootFields.includes(fieldName)) {
errors.push((0, utils_1.errorWithCode)('RESERVED_FIELD_USED', (0, utils_1.logServiceAndType)(serviceName, rootQueryName, fieldName) +
`${fieldName} is a field reserved for federation and can\'t be used at the Query root.`, field));
}
}
}
},
});
return errors;
};
exports.reservedFieldUsed = reservedFieldUsed;
//# sourceMappingURL=reservedFieldUsed.js.map
;