Skip to content

Commit a867c89

Browse files
Remove enhance-visitors dependency
Closes #362 Co-authored-by: Andrew Kazakov <6554045+andreww2012@users.noreply.github.com>
1 parent a244c17 commit a867c89

36 files changed

Lines changed: 67 additions & 71 deletions

create-ava-rule.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* eslint-disable eslint-plugin/prefer-message-ids, eslint-plugin/prefer-object-rule, eslint-plugin/require-meta-docs-description, eslint-plugin/require-meta-docs-recommended, eslint-plugin/require-meta-schema, eslint-plugin/require-meta-type */
2-
import enhance from 'enhance-visitors';
32
import {findVariable} from '@eslint-community/eslint-utils';
43
import {hasComputedTestModifier, unwrapTypeExpression} from './util.js';
54

@@ -17,6 +16,32 @@ const trackedAliasModifiers = new Set([
1716
'todo',
1817
]);
1918

19+
const mergeVisitors = (...visitors) => {
20+
const visitor = {};
21+
22+
for (const customVisitor of visitors) {
23+
for (const [selector, customHandler] of Object.entries(customVisitor)) {
24+
const predefinedHandler = visitor[selector];
25+
if (!predefinedHandler) {
26+
visitor[selector] = customHandler;
27+
continue;
28+
}
29+
30+
visitor[selector] = selector.endsWith(':exit')
31+
? node => {
32+
customHandler(node);
33+
predefinedHandler(node);
34+
}
35+
: node => {
36+
predefinedHandler(node);
37+
customHandler(node);
38+
};
39+
}
40+
}
41+
42+
return visitor;
43+
};
44+
2045
const createAvaRule = sourceCode => {
2146
let isTestFile = false;
2247
let currentTestNode;
@@ -194,8 +219,14 @@ const createAvaRule = sourceCode => {
194219
isInTestFile: () => isTestFile,
195220
isInTestNode: () => currentTestNode,
196221
isTestNode: node => currentTestNode === node,
197-
merge: customHandlers => enhance.mergeVisitors([predefinedRules, customHandlers]),
222+
merge: customHandlers => mergeVisitors(predefinedRules, customHandlers),
198223
};
199224
};
200225

226+
export const visitIf = predicates => visitor => node => {
227+
if (predicates.every(predicate => predicate(node))) {
228+
return visitor(node);
229+
}
230+
};
231+
201232
export default createAvaRule;

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@
4444
"dependencies": {
4545
"@eslint-community/eslint-utils": "^4.9.1",
4646
"@eslint/json": "^1.0.0",
47-
"enhance-visitors": "^1.0.0",
4847
"espree": "^11.1.0",
4948
"espurify": "^3.2.0",
5049
"micro-spelling-correcter": "^1.1.1",

rules/assertion-arguments.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import {visitIf} from 'enhance-visitors';
1+
import createAvaRule, {visitIf} from '../create-ava-rule.js';
22
import {
33
getStaticValue, isOpeningParenToken, isCommaToken, findVariable,
44
} from '@eslint-community/eslint-utils';
55
import util from '../util.js';
6-
import createAvaRule from '../create-ava-rule.js';
76

87
const MESSAGE_ID_TOO_FEW = 'too-few-arguments';
98
const MESSAGE_ID_TOO_MANY = 'too-many-arguments';

rules/failing-test-url.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import {visitIf} from 'enhance-visitors';
2-
import createAvaRule from '../create-ava-rule.js';
1+
import createAvaRule, {visitIf} from '../create-ava-rule.js';
32
import util from '../util.js';
43

54
const MESSAGE_ID = 'failing-test-url';

rules/hooks-order.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import {visitIf} from 'enhance-visitors';
2-
import createAvaRule from '../create-ava-rule.js';
1+
import createAvaRule, {visitIf} from '../create-ava-rule.js';
32
import util from '../util.js';
43

54
const MESSAGE_ID = 'hooks-order';

rules/max-asserts.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import {visitIf} from 'enhance-visitors';
1+
import createAvaRule, {visitIf} from '../create-ava-rule.js';
22
import util from '../util.js';
3-
import createAvaRule from '../create-ava-rule.js';
43

54
const MESSAGE_ID = 'max-asserts';
65

rules/no-async-fn-without-await.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import {visitIf} from 'enhance-visitors';
2-
import createAvaRule from '../create-ava-rule.js';
1+
import createAvaRule, {visitIf} from '../create-ava-rule.js';
32
import util from '../util.js';
43

54
const MESSAGE_ID = 'no-async-fn-without-await';

rules/no-conditional-assertion.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import {visitIf} from 'enhance-visitors';
2-
import createAvaRule from '../create-ava-rule.js';
1+
import createAvaRule, {visitIf} from '../create-ava-rule.js';
32
import util from '../util.js';
43

54
const MESSAGE_ID = 'no-conditional-assertion';

rules/no-duplicate-hooks.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import {visitIf} from 'enhance-visitors';
2-
import createAvaRule from '../create-ava-rule.js';
1+
import createAvaRule, {visitIf} from '../create-ava-rule.js';
32
import util from '../util.js';
43

54
const MESSAGE_ID = 'no-duplicate-hooks';

rules/no-duplicate-modifiers.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import {visitIf} from 'enhance-visitors';
1+
import createAvaRule, {visitIf} from '../create-ava-rule.js';
22
import util from '../util.js';
3-
import createAvaRule from '../create-ava-rule.js';
43

54
const MESSAGE_ID = 'no-duplicate-modifiers';
65

0 commit comments

Comments
 (0)