{"version":3,"file":"sortValueNode.js","sourceRoot":"","sources":["../../src/utilities/sortValueNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,sCAAqC;AAG9D,OAAO,EAAE,IAAI,EAAE,8BAA6B;AAS5C,MAAM,UAAU,aAAa,CAAC,SAAoB;IAChD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,MAAM;YACd,OAAO;gBACL,GAAG,SAAS;gBACZ,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC;aACrC,CAAC;QACJ,KAAK,IAAI,CAAC,IAAI;YACZ,OAAO;gBACL,GAAG,SAAS;gBACZ,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;aAC5C,CAAC;QACJ,KAAK,IAAI,CAAC,GAAG,CAAC;QACd,KAAK,IAAI,CAAC,KAAK,CAAC;QAChB,KAAK,IAAI,CAAC,MAAM,CAAC;QACjB,KAAK,IAAI,CAAC,OAAO,CAAC;QAClB,KAAK,IAAI,CAAC,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,IAAI,CAAC;QACf,KAAK,IAAI,CAAC,QAAQ;YAChB,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,MAAsC;IAEtC,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnB,GAAG,SAAS;QACZ,KAAK,EAAE,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;KACtC,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CACvB,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CACrD,CAAC;AACN,CAAC","sourcesContent":["import { naturalCompare } from '../jsutils/naturalCompare.ts';\n\nimport type { ObjectFieldNode, ValueNode } from '../language/ast.ts';\nimport { Kind } from '../language/kinds.ts';\n\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\nexport function sortValueNode(valueNode: ValueNode): ValueNode {\n  switch (valueNode.kind) {\n    case Kind.OBJECT:\n      return {\n        ...valueNode,\n        fields: sortFields(valueNode.fields),\n      };\n    case Kind.LIST:\n      return {\n        ...valueNode,\n        values: valueNode.values.map(sortValueNode),\n      };\n    case Kind.INT:\n    case Kind.FLOAT:\n    case Kind.STRING:\n    case Kind.BOOLEAN:\n    case Kind.NULL:\n    case Kind.ENUM:\n    case Kind.VARIABLE:\n      return valueNode;\n  }\n}\n\nfunction sortFields(\n  fields: ReadonlyArray<ObjectFieldNode>,\n): Array<ObjectFieldNode> {\n  return fields\n    .map((fieldNode) => ({\n      ...fieldNode,\n      value: sortValueNode(fieldNode.value),\n    }))\n    .sort((fieldA, fieldB) =>\n      naturalCompare(fieldA.name.value, fieldB.name.value),\n    );\n}\n"]}