Skip to content

Commit

Permalink
perf: do not compute options if rule is not used
Browse files Browse the repository at this point in the history
  • Loading branch information
azat-io committed Jun 4, 2023
1 parent a8c517a commit 4574caa
Show file tree
Hide file tree
Showing 7 changed files with 204 additions and 200 deletions.
14 changes: 7 additions & 7 deletions rules/sort-array-includes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,19 @@ export default createEslintRule<Options, MESSAGE_ID>({
node.property.type === AST_NODE_TYPES.Identifier &&
node.property.name === 'includes'
) {
let options = complete(context.options.at(0), {
type: SortType.alphabetical,
order: SortOrder.asc,
'ignore-case': false,
'spread-last': false,
})

let elements =
node.object.type === AST_NODE_TYPES.ArrayExpression
? node.object.elements
: node.object.arguments

if (elements.length > 1) {
let options = complete(context.options.at(0), {
type: SortType.alphabetical,
order: SortOrder.asc,
'ignore-case': false,
'spread-last': false,
})

let source = context.getSourceCode()

let nodes: (SortingNode & { type: string })[] = elements
Expand Down
12 changes: 6 additions & 6 deletions rules/sort-enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,13 @@ export default createEslintRule<Options, MESSAGE_ID>({
],
create: context => ({
TSEnumDeclaration: node => {
let options = complete(context.options.at(0), {
type: SortType.alphabetical,
order: SortOrder.asc,
'ignore-case': false,
})

if (node.members.length > 1) {
let options = complete(context.options.at(0), {
type: SortType.alphabetical,
order: SortOrder.asc,
'ignore-case': false,
})

let source = context.getSourceCode()

let nodes: SortingNode[] = node.members.map(member => ({
Expand Down
111 changes: 56 additions & 55 deletions rules/sort-interfaces.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,69 +76,70 @@ export default createEslintRule<Options, MESSAGE_ID>({
],
create: context => ({
TSInterfaceDeclaration: node => {
let options = complete(context.options.at(0), {
type: SortType.alphabetical,
'ignore-case': false,
order: SortOrder.asc,
'ignore-pattern': [],
})
if (node.body.body.length > 1) {
let options = complete(context.options.at(0), {
type: SortType.alphabetical,
'ignore-case': false,
order: SortOrder.asc,
'ignore-pattern': [],
})

if (
!options['ignore-pattern'].some(pattern =>
minimatch(node.id.name, pattern),
) &&
node.body.body.length > 1
) {
let source = context.getSourceCode()
if (
!options['ignore-pattern'].some(pattern =>
minimatch(node.id.name, pattern),
)
) {
let source = context.getSourceCode()

let nodes: SortingNode[] = node.body.body.map(element => {
let name: string
let nodes: SortingNode[] = node.body.body.map(element => {
let name: string

if (element.type === AST_NODE_TYPES.TSPropertySignature) {
if (element.key.type === AST_NODE_TYPES.Identifier) {
;({ name } = element.key)
} else if (element.key.type === AST_NODE_TYPES.Literal) {
name = `${element.key.value}`
} else {
let end: number =
element.typeAnnotation?.range.at(0) ??
element.range.at(1)! - (element.optional ? '?'.length : 0)
if (element.type === AST_NODE_TYPES.TSPropertySignature) {
if (element.key.type === AST_NODE_TYPES.Identifier) {
;({ name } = element.key)
} else if (element.key.type === AST_NODE_TYPES.Literal) {
name = `${element.key.value}`
} else {
let end: number =
element.typeAnnotation?.range.at(0) ??
element.range.at(1)! - (element.optional ? '?'.length : 0)

name = source.text.slice(element.range.at(0), end)
}
} else if (element.type === AST_NODE_TYPES.TSIndexSignature) {
let endIndex: number =
element.typeAnnotation?.range.at(0) ?? element.range.at(1)!
name = source.text.slice(element.range.at(0), end)
}
} else if (element.type === AST_NODE_TYPES.TSIndexSignature) {
let endIndex: number =
element.typeAnnotation?.range.at(0) ?? element.range.at(1)!

name = source.text.slice(element.range.at(0), endIndex)
} else {
let endIndex: number =
element.returnType?.range.at(0) ?? element.range.at(1)!
name = source.text.slice(element.range.at(0), endIndex)
} else {
let endIndex: number =
element.returnType?.range.at(0) ?? element.range.at(1)!

name = source.text.slice(element.range.at(0), endIndex)
}
name = source.text.slice(element.range.at(0), endIndex)
}

return {
size: rangeToDiff(element.range),
node: element,
name,
}
})
return {
size: rangeToDiff(element.range),
node: element,
name,
}
})

pairwise(nodes, (first, second) => {
if (compare(first, second, options)) {
context.report({
messageId: 'unexpectedInterfacePropertiesOrder',
data: {
first: toSingleLine(first.name),
second: toSingleLine(second.name),
},
node: second.node,
fix: fixer =>
makeFixes(fixer, nodes, sortNodes(nodes, options), source),
})
}
})
pairwise(nodes, (first, second) => {
if (compare(first, second, options)) {
context.report({
messageId: 'unexpectedInterfacePropertiesOrder',
data: {
first: toSingleLine(first.name),
second: toSingleLine(second.name),
},
node: second.node,
fix: fixer =>
makeFixes(fixer, nodes, sortNodes(nodes, options), source),
})
}
})
}
}
},
}),
Expand Down
Loading

0 comments on commit 4574caa

Please sign in to comment.