Skip to content

Commit cac57ec

Browse files
feat(ban-operators)!: only run in pipe due to performance
Tested on a very large codebase with TIMING=1. When checking every single CallExpression, it takes ~2.5 seconds. When limiting to only inside of pipe, it drops off the top-10 slowest rules (less than 130ms).
1 parent 7527002 commit cac57ec

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

src/rules/ban-operators.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,10 @@ export const banOperatorsRule = ruleCreator({
5959
}
6060

6161
return {
62-
'CallExpression[callee.name]': (node: es.CallExpression) => {
62+
'CallExpression[callee.property.name=\'pipe\'] > CallExpression[callee.name]': (node: es.CallExpression) => {
6363
checkNode(node.callee);
6464
},
65-
'CallExpression[callee.type="MemberExpression"]': (node: es.CallExpression) => {
65+
'CallExpression[callee.property.name=\'pipe\'] > CallExpression[callee.type="MemberExpression"]': (node: es.CallExpression) => {
6666
const callee = node.callee as es.MemberExpression;
6767
checkNode(callee.property);
6868
},

tests/rules/ban-operators.test.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,16 @@ ruleTester({ types: true }).run('ban-operators', banOperatorsRule, {
5555
`,
5656
options: [{ concat: true }],
5757
},
58+
{
59+
code: stripIndent`
60+
// only within pipe
61+
import { of, concat } from "rxjs";
62+
63+
// For performance reasons, we don't lint operators used outside of pipe.
64+
concat(of('a'));
65+
`,
66+
options: [{ concat: true }],
67+
},
5868
],
5969
invalid: [
6070
fromFixture(

0 commit comments

Comments
 (0)