@graphql-tools/utils
Version:
Common package containing utils and types for GraphQL tools
26 lines (25 loc) • 914 B
JavaScript
import { Kind } from 'graphql';
function isMeaningfulDescription(description) {
return description.trim().length > 0;
}
export function getDescriptionNode(obj) {
// Prefer the runtime `description` over a stale `astNode` description.
// Schema transforms (e.g. mapSchema) update config descriptions without rewriting astNode (#5508).
// Skip empty/whitespace-only strings so loaders that set `description: ""` do not print `""""""`.
if (typeof obj.description === 'string') {
if (!isMeaningfulDescription(obj.description)) {
return undefined;
}
return {
kind: Kind.STRING,
value: obj.description,
block: true,
};
}
if (obj.astNode?.description && isMeaningfulDescription(obj.astNode.description.value)) {
return {
...obj.astNode.description,
block: true,
};
}
}