Skip to content

Commit

Permalink
findBreakingChanges: replace 'localeCompare' with simplier alternative
Browse files Browse the repository at this point in the history
Motivated by #2869
  • Loading branch information
IvanGoncharov committed Jan 5, 2021
1 parent 998bea6 commit 90cffec
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions src/utilities/findBreakingChanges.js
Expand Up @@ -4,6 +4,7 @@ import keyMap from '../jsutils/keyMap';
import inspect from '../jsutils/inspect';
import invariant from '../jsutils/invariant';

import type { ObjectFieldNode } from '../language/ast';
import { print } from '../language/printer';
import { visit } from '../language/visitor';

Expand Down Expand Up @@ -541,16 +542,33 @@ function stringifyValue(value: mixed, type: GraphQLInputType): string {

const sortedAST = visit(ast, {
ObjectValue(objectNode) {
const fields = [...objectNode.fields].sort((fieldA, fieldB) =>
fieldA.name.value.localeCompare(fieldB.name.value),
);
// Make a copy since sort mutates array
const fields = [...objectNode.fields];

fields.sort(compareFieldNames);
return { ...objectNode, fields };
},
});

return print(sortedAST);
}

function compareFieldNames(
fieldA: ObjectFieldNode,
fieldB: ObjectFieldNode,
): number {
const nameA = fieldA.name.value;
const nameB = fieldB.name.value;

if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0;
}

function diff<T: { name: string, ... }>(
oldArray: $ReadOnlyArray<T>,
newArray: $ReadOnlyArray<T>,
Expand Down

0 comments on commit 90cffec

Please sign in to comment.