Skip to content

Commit 65f10f9

Browse files
committed
[Refactor] getFirstTokens: context -> sourceCode
1 parent 0c804bb commit 65f10f9

7 files changed

+28
-9
lines changed

lib/rules/jsx-sort-default-props.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ const variableUtil = require('../util/variable');
1010
const docsUrl = require('../util/docsUrl');
1111
const report = require('../util/report');
1212
const log = require('../util/log');
13-
const getSourceCode = require('../util/eslint').getSourceCode;
13+
const eslintUtil = require('../util/eslint');
14+
15+
const getFirstTokens = eslintUtil.getFirstTokens;
16+
const getSourceCode = eslintUtil.getSourceCode;
1417

1518
let isWarnedForDeprecation = false;
1619

@@ -66,7 +69,7 @@ module.exports = {
6669
// (babel-eslint@5 does not expose property name so we have to rely on tokens)
6770
}
6871
if (node.type === 'ClassProperty') {
69-
const tokens = getSourceCode(context).getFirstTokens(node, 2);
72+
const tokens = getFirstTokens(context, node, 2);
7073
return tokens[1] && tokens[1].type === 'Identifier' ? tokens[1].value : tokens[0].value;
7174
}
7275
return '';

lib/rules/jsx-tag-spacing.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
const getTokenBeforeClosingBracket = require('../util/getTokenBeforeClosingBracket');
99
const docsUrl = require('../util/docsUrl');
1010
const report = require('../util/report');
11-
const getSourceCode = require('../util/eslint').getSourceCode;
11+
const eslintUtil = require('../util/eslint');
12+
13+
const getFirstTokens = eslintUtil.getFirstTokens;
14+
const getSourceCode = eslintUtil.getSourceCode;
1215

1316
const messages = {
1417
selfCloseSlashNoSpace: 'Whitespace is forbidden between `/` and `>`; write `/>`',
@@ -65,7 +68,7 @@ function validateClosingSlash(context, node, option) {
6568
});
6669
}
6770
} else {
68-
const firstTokens = sourceCode.getFirstTokens(node, 2);
71+
const firstTokens = getFirstTokens(context, node, 2);
6972

7073
adjacent = !sourceCode.isSpaceBetweenTokens(firstTokens[0], firstTokens[1]);
7174

lib/rules/sort-default-props.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
const variableUtil = require('../util/variable');
1010
const docsUrl = require('../util/docsUrl');
1111
const report = require('../util/report');
12-
const getSourceCode = require('../util/eslint').getSourceCode;
12+
const eslintUtil = require('../util/eslint');
13+
14+
const getFirstTokens = eslintUtil.getFirstTokens;
15+
const getSourceCode = eslintUtil.getSourceCode;
1316

1417
// ------------------------------------------------------------------------------
1518
// Rule Definition
@@ -61,7 +64,7 @@ module.exports = {
6164
// (babel-eslint@5 does not expose property name so we have to rely on tokens)
6265
}
6366
if (node.type === 'ClassProperty') {
64-
const tokens = getSourceCode(context).getFirstTokens(node, 2);
67+
const tokens = getFirstTokens(context, node, 2);
6568
return tokens[1] && tokens[1].type === 'Identifier' ? tokens[1].value : tokens[0].value;
6669
}
6770
return '';

lib/util/annotations.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
'use strict';
88

9+
const getFirstTokens = require('./eslint').getFirstTokens;
10+
911
/**
1012
* Checks if we are declaring a `props` argument with a flow type annotation.
1113
* @param {ASTNode} node The AST node being checked.
@@ -19,7 +21,7 @@ function isAnnotatedFunctionPropsDeclaration(node, context) {
1921

2022
const typeNode = node.params[0].type === 'AssignmentPattern' ? node.params[0].left : node.params[0];
2123

22-
const tokens = context.getFirstTokens(typeNode, 2);
24+
const tokens = getFirstTokens(context, typeNode, 2);
2325
const isAnnotated = typeNode.typeAnnotation;
2426
const isDestructuredProps = typeNode.type === 'ObjectPattern';
2527
const isProps = tokens[0].value === 'props' || (tokens[1] && tokens[1].value === 'props');

lib/util/ast.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
const estraverse = require('estraverse');
88
const eslintUtil = require('./eslint');
99

10+
const getFirstTokens = eslintUtil.getFirstTokens;
1011
const getSourceCode = eslintUtil.getSourceCode;
1112
// const pragmaUtil = require('./pragma');
1213

@@ -287,7 +288,7 @@ function stripQuotes(string) {
287288
*/
288289
function getKeyValue(context, node) {
289290
if (node.type === 'ObjectTypeProperty') {
290-
const tokens = getSourceCode(context).getFirstTokens(node, 2);
291+
const tokens = getFirstTokens(context, node, 2);
291292
return (tokens[0].value === '+' || tokens[0].value === '-'
292293
? tokens[1].value
293294
: stripQuotes(tokens[0].value)

lib/util/eslint.js

+6
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,14 @@ function markVariableAsUsed(name, node, context) {
1616
: context.markVariableAsUsed(name);
1717
}
1818

19+
function getFirstTokens(context, node, count) {
20+
const sourceCode = getSourceCode(context);
21+
return sourceCode.getFirstTokens ? sourceCode.getFirstTokens(node, count) : context.getFirstTokens(node, count);
22+
}
23+
1924
module.exports = {
2025
getAncestors,
26+
getFirstTokens,
2127
getSourceCode,
2228
markVariableAsUsed,
2329
};

lib/util/propTypes.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const astUtil = require('./ast');
1515
const isFirstLetterCapitalized = require('./isFirstLetterCapitalized');
1616
const eslintUtil = require('./eslint');
1717

18+
const getFirstTokens = eslintUtil.getFirstTokens;
1819
const getSourceCode = eslintUtil.getSourceCode;
1920

2021
/**
@@ -1112,7 +1113,7 @@ module.exports = function propTypesInstructions(context, components, utils) {
11121113
*/
11131114
function isAnnotatedClassPropsDeclaration(node) {
11141115
if (node && (node.type === 'ClassProperty' || node.type === 'PropertyDefinition')) {
1115-
const tokens = context.getFirstTokens(node, 2);
1116+
const tokens = getFirstTokens(context, node, 2);
11161117
if (
11171118
node.typeAnnotation && (
11181119
tokens[0].value === 'props'

0 commit comments

Comments
 (0)