in src/main/com/intellij/lang/jsgraphql/types/language/AstSorter.java [280:345]
private Comparator<Definition> comparingDefinitions() {
Function<Definition, String> byName = d -> {
if (d instanceof OperationDefinition) {
String name = ((OperationDefinition)d).getName();
return name == null ? "" : name;
}
if (d instanceof FragmentDefinition) {
return ((FragmentDefinition)d).getName();
}
if (d instanceof DirectiveDefinition) {
return ((DirectiveDefinition)d).getName();
}
if (d instanceof TypeDefinition) {
return ((TypeDefinition)d).getName();
}
return "";
};
Function<Definition, Integer> byType = d -> {
if (d instanceof OperationDefinition) {
OperationDefinition.Operation operation = ((OperationDefinition)d).getOperation();
if (OperationDefinition.Operation.QUERY == operation || operation == null) {
return 101;
}
if (OperationDefinition.Operation.MUTATION == operation) {
return 102;
}
if (OperationDefinition.Operation.SUBSCRIPTION == operation) {
return 104;
}
return 100;
}
if (d instanceof FragmentDefinition) {
return 200;
}
// SDL
if (d instanceof DirectiveDefinition) {
return 300;
}
if (d instanceof SchemaDefinition) {
return 400;
}
if (d instanceof TypeDefinition) {
if (d instanceof ObjectTypeDefinition) {
return 501;
}
if (d instanceof InterfaceTypeDefinition) {
return 502;
}
if (d instanceof UnionTypeDefinition) {
return 503;
}
if (d instanceof EnumTypeDefinition) {
return 504;
}
if (d instanceof ScalarTypeDefinition) {
return 505;
}
if (d instanceof InputObjectTypeDefinition) {
return 506;
}
return 500;
}
return -1;
};
return comparing(byType).thenComparing(byName);
}