Skip to content

Commit b038886

Browse files
author
Geraint White
authored
fix: support exact types in sort-keys (#494)
1 parent d7abd9f commit b038886

File tree

2 files changed

+45
-3
lines changed

2 files changed

+45
-3
lines changed

src/rules/sortKeys.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const generateOrderedList = (context, sort, properties) => {
4949
// Maintain everything between the start of property including leading comments and the nextPunctuator `,` or `}`:
5050
const nextPunctuator = source.getTokenAfter(property, {
5151
filter: (token) => {
52-
return token.type === 'Punctuator';
52+
return token.type === 'Punctuator' || token.value === '|}';
5353
},
5454
});
5555
const beforePunctuator = source.getTokenBefore(nextPunctuator, {
@@ -80,7 +80,7 @@ const generateOrderedList = (context, sort, properties) => {
8080
// Maintain everything between the `:` and the next Punctuator `,` or `}`:
8181
const nextPunctuator = source.getTokenAfter(property, {
8282
filter: (token) => {
83-
return token.type === 'Punctuator';
83+
return token.type === 'Punctuator' || token.value === '|}';
8484
},
8585
});
8686
const beforePunctuator = source.getTokenBefore(nextPunctuator, {
@@ -149,7 +149,7 @@ const generateFix = (node, context, sort) => {
149149
node.properties.forEach((property, index) => {
150150
const nextPunctuator = source.getTokenAfter(property, {
151151
filter: (token) => {
152-
return token.type === 'Punctuator';
152+
return token.type === 'Punctuator' || token.value === '|}';
153153
},
154154
});
155155
const beforePunctuator = source.getTokenBefore(nextPunctuator, {

tests/rules/assertions/sortKeys.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,48 @@ export default {
557557
}
558558
`,
559559
},
560+
561+
// https://github.com/gajus/eslint-plugin-flowtype/issues/493
562+
{
563+
code: `
564+
export type GroupOrdersResponseType = {|
565+
isSuccess: boolean,
566+
code: number,
567+
message?: string,
568+
errorMessage: string,
569+
result: {|
570+
OrderNumber: string,
571+
Orders: GroupOrderSummaryType[],
572+
PlacedOn: string,
573+
Status: string,
574+
ReturnText: string,
575+
IncludesLegacyOrder: boolean
576+
|}
577+
|};
578+
`,
579+
errors: [
580+
{message: 'Expected type annotations to be in ascending order. "code" should be before "isSuccess".'},
581+
{message: 'Expected type annotations to be in ascending order. "errorMessage" should be before "message".'},
582+
{message: 'Expected type annotations to be in ascending order. "ReturnText" should be before "Status".'},
583+
{message: 'Expected type annotations to be in ascending order. "IncludesLegacyOrder" should be before "ReturnText".'},
584+
],
585+
output: `
586+
export type GroupOrdersResponseType = {|
587+
code: number,
588+
errorMessage: string,
589+
isSuccess: boolean,
590+
message?: string,
591+
result: {|
592+
IncludesLegacyOrder: boolean,
593+
OrderNumber: string,
594+
Orders: GroupOrderSummaryType[],
595+
PlacedOn: string,
596+
ReturnText: string,
597+
Status: string
598+
|}
599+
|};
600+
`,
601+
},
560602
],
561603
misconfigured: [
562604
{

0 commit comments

Comments
 (0)