123456789101112131415161718192021222324252627282930313233343536373839 |
- import { naturalCompare } from '../jsutils/naturalCompare.mjs';
- import { Kind } from '../language/kinds.mjs';
- /**
- * Sort ValueNode.
- *
- * This function returns a sorted copy of the given ValueNode.
- *
- * @internal
- */
- export function sortValueNode(valueNode) {
- switch (valueNode.kind) {
- case Kind.OBJECT:
- return { ...valueNode, fields: sortFields(valueNode.fields) };
- case Kind.LIST:
- return { ...valueNode, values: valueNode.values.map(sortValueNode) };
- case Kind.INT:
- case Kind.FLOAT:
- case Kind.STRING:
- case Kind.BOOLEAN:
- case Kind.NULL:
- case Kind.ENUM:
- case Kind.VARIABLE:
- return valueNode;
- }
- }
- function sortFields(fields) {
- return fields
- .map((fieldNode) => ({
- ...fieldNode,
- value: sortValueNode(fieldNode.value),
- }))
- .sort((fieldA, fieldB) =>
- naturalCompare(fieldA.name.value, fieldB.name.value),
- );
- }
|