graphql-paper
Version:
A flexible in-memory store based on a GraphQL Schema
29 lines (27 loc) • 1.1 kB
JavaScript
;
var graphql = require('graphql');
var nullDocument = require('../../document/null-document.js');
var fieldReturnTypeMismatch = require('../errors/field-return-type-mismatch.js');
const nonNullFieldValidator = {
skipConnectionValue: false,
skipNullValue: false,
validate({
field,
fieldValue,
fieldConnections: connections
}) {
if (graphql.isNonNullType(field.type)) {
const hasConnectedNullDocument = (connections === null || connections === void 0 ? void 0 : connections.length) === 1 && (connections === null || connections === void 0 ? void 0 : connections.includes(nullDocument.key));
const actual = hasConnectedNullDocument ? 'null document' : fieldValue === undefined ? 'undefined' : 'null';
if (fieldValue == null && (hasConnectedNullDocument || !connections)) {
throw new fieldReturnTypeMismatch.FieldReturnTypeMismatch({
field: field,
expected: 'non-null',
actual
});
}
}
}
};
exports.nonNullFieldValidator = nonNullFieldValidator;
//# sourceMappingURL=non-null-field.js.map