index.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.sortAST = void 0;
  7. const graphql_1 = require("graphql");
  8. const lodash_sortby_1 = __importDefault(require("lodash.sortby"));
  9. function sortAST(ast) {
  10. return (0, graphql_1.visit)(ast, {
  11. Document(node) {
  12. return {
  13. ...node,
  14. definitions: (0, lodash_sortby_1.default)(node.definitions, "kind", "name.value"),
  15. };
  16. },
  17. OperationDefinition(node) {
  18. return sortVariableDefinitions(node);
  19. },
  20. SelectionSet(node) {
  21. return {
  22. ...node,
  23. selections: (0, lodash_sortby_1.default)(node.selections, "kind", "name.value"),
  24. };
  25. },
  26. Field(node) {
  27. return sortArguments(node);
  28. },
  29. FragmentSpread(node) {
  30. return sortDirectives(node);
  31. },
  32. InlineFragment(node) {
  33. return sortDirectives(node);
  34. },
  35. FragmentDefinition(node) {
  36. return sortDirectives(sortVariableDefinitions(node));
  37. },
  38. Directive(node) {
  39. return sortArguments(node);
  40. },
  41. });
  42. }
  43. exports.sortAST = sortAST;
  44. function sortDirectives(node) {
  45. return "directives" in node
  46. ? { ...node, directives: (0, lodash_sortby_1.default)(node.directives, "name.value") }
  47. : node;
  48. }
  49. function sortArguments(node) {
  50. return "arguments" in node
  51. ? { ...node, arguments: (0, lodash_sortby_1.default)(node.arguments, "name.value") }
  52. : node;
  53. }
  54. function sortVariableDefinitions(node) {
  55. return "variableDefinitions" in node
  56. ? {
  57. ...node,
  58. variableDefinitions: (0, lodash_sortby_1.default)(node.variableDefinitions, "variable.name.value"),
  59. }
  60. : node;
  61. }
  62. //# sourceMappingURL=index.js.map