Skip to content

Commit

Permalink
[Refactor] create getSourceCode helper, since `context.getSourceCod…
Browse files Browse the repository at this point in the history
…e` is deprecated

Co-authored-by: Mateusz Łopaciński <lop.mateusz.2001@gmail.com>
Co-authored-by: Jordan Harband <ljharb@gmail.com>
  • Loading branch information
MatiPl01 and ljharb committed Apr 28, 2024
1 parent d97e3ed commit 26765f9
Show file tree
Hide file tree
Showing 49 changed files with 166 additions and 91 deletions.
7 changes: 4 additions & 3 deletions lib/rules/boolean-prop-naming.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ const propsUtil = require('../util/props');
const docsUrl = require('../util/docsUrl');
const propWrapperUtil = require('../util/propWrapper');
const report = require('../util/report');
const getSourceCode = require('../util/eslint').getSourceCode;

// ------------------------------------------------------------------------------
// Rule Definition
Expand Down Expand Up @@ -115,7 +116,7 @@ module.exports = {
// we can't get the name of the Flow object key name. So we have
// to hack around it for now.
if (node.type === 'ObjectTypeProperty') {
return context.getSourceCode().getFirstToken(node).value;
return getSourceCode(context).getFirstToken(node).value;
}

return node.key.name;
Expand Down Expand Up @@ -308,7 +309,7 @@ module.exports = {
&& node.value.type === 'CallExpression'
&& propWrapperUtil.isPropWrapperFunction(
context,
context.getSourceCode().getText(node.value.callee)
getSourceCode(context).getText(node.value.callee)
)
) {
checkPropWrapperArguments(node, node.value.arguments);
Expand All @@ -334,7 +335,7 @@ module.exports = {
right.type === 'CallExpression'
&& propWrapperUtil.isPropWrapperFunction(
context,
context.getSourceCode().getText(right.callee)
getSourceCode(context).getText(right.callee)
)
) {
checkPropWrapperArguments(component.node, right.arguments);
Expand Down
5 changes: 4 additions & 1 deletion lib/rules/destructuring-assignment.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@

const Components = require('../util/Components');
const docsUrl = require('../util/docsUrl');
const eslintUtil = require('../util/eslint');
const isAssignmentLHS = require('../util/ast').isAssignmentLHS;
const report = require('../util/report');

const getSourceCode = eslintUtil.getSourceCode;

const DEFAULT_OPTION = 'always';

function createSFCParams() {
Expand Down Expand Up @@ -269,7 +272,7 @@ module.exports = {
param.typeAnnotation ? param.typeAnnotation.range[0] : param.range[1],
];
return [
fixer.replaceTextRange(replaceRange, context.getSourceCode().getText(node.id)),
fixer.replaceTextRange(replaceRange, getSourceCode(context).getText(node.id)),
fixer.remove(node.parent),
];
},
Expand Down
5 changes: 3 additions & 2 deletions lib/rules/forbid-elements.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

const has = require('object.hasown/polyfill')();
const docsUrl = require('../util/docsUrl');
const getSourceCode = require('../util/eslint').getSourceCode;
const isCreateElement = require('../util/isCreateElement');
const report = require('../util/report');

Expand Down Expand Up @@ -90,7 +91,7 @@ module.exports = {

return {
JSXOpeningElement(node) {
reportIfForbidden(context.getSourceCode().getText(node.name), node.name);
reportIfForbidden(getSourceCode(context).getText(node.name), node.name);
},

CallExpression(node) {
Expand All @@ -110,7 +111,7 @@ module.exports = {
} else if (argType === 'Literal' && /^[a-z][^.]*$/.test(argument.value)) {
reportIfForbidden(argument.value, argument);
} else if (argType === 'MemberExpression') {
reportIfForbidden(context.getSourceCode().getText(argument), argument);
reportIfForbidden(getSourceCode(context).getText(argument), argument);
}
},
};
Expand Down
3 changes: 2 additions & 1 deletion lib/rules/forbid-prop-types.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const astUtil = require('../util/ast');
const docsUrl = require('../util/docsUrl');
const propWrapperUtil = require('../util/propWrapper');
const report = require('../util/report');
const getSourceCode = require('../util/eslint').getSourceCode;

// ------------------------------------------------------------------------------
// Constants
Expand Down Expand Up @@ -171,7 +172,7 @@ module.exports = {
case 'CallExpression': {
const innerNode = node.arguments && node.arguments[0];
if (
propWrapperUtil.isPropWrapperFunction(context, context.getSourceCode().getText(node.callee))
propWrapperUtil.isPropWrapperFunction(context, getSourceCode(context).getText(node.callee))
&& innerNode
) {
checkNode(innerNode);
Expand Down
3 changes: 2 additions & 1 deletion lib/rules/function-component-definition.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const arrayIncludes = require('array-includes');
const Components = require('../util/Components');
const docsUrl = require('../util/docsUrl');
const reportC = require('../util/report');
const getSourceCode = require('../util/eslint').getSourceCode;

// ------------------------------------------------------------------------------
// Rule Definition
Expand Down Expand Up @@ -181,7 +182,7 @@ module.exports = {
);

function getFixer(node, options) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
const source = sourceCode.getText();

const typeAnnotation = getTypeAnnotation(node, source);
Expand Down
7 changes: 4 additions & 3 deletions lib/rules/hook-use-state.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ const Components = require('../util/Components');
const docsUrl = require('../util/docsUrl');
const report = require('../util/report');
const getMessageData = require('../util/message');
const getSourceCode = require('../util/eslint').getSourceCode;

// ------------------------------------------------------------------------------
// Rule Definition
Expand Down Expand Up @@ -160,14 +161,14 @@ module.exports = {
fix: (fixer) => [
// Add useMemo import, if necessary
useStateReactImportSpecifier
&& (!useMemoReactImportSpecifier || defaultReactImportName)
&& fixer.insertTextAfter(useStateReactImportSpecifier, ', useMemo'),
&& (!useMemoReactImportSpecifier || defaultReactImportName)
&& fixer.insertTextAfter(useStateReactImportSpecifier, ', useMemo'),
// Convert single-value destructure to simple assignment
fixer.replaceTextRange(node.parent.id.range, valueVariableName),
// Convert useState call to useMemo + arrow function + dependency array
fixer.replaceTextRange(
node.range,
`${useMemoCode}(() => ${context.getSourceCode().getText(node.arguments[0])}, [])`
`${useMemoCode}(() => ${getSourceCode(context).getText(node.arguments[0])}, [])`
),
].filter(Boolean),
}
Expand Down
7 changes: 4 additions & 3 deletions lib/rules/jsx-closing-bracket-location.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

const has = require('object.hasown/polyfill')();
const docsUrl = require('../util/docsUrl');
const getSourceCode = require('../util/eslint').getSourceCode;
const report = require('../util/report');

// ------------------------------------------------------------------------------
Expand Down Expand Up @@ -170,11 +171,11 @@ module.exports = {
let spaces = [];
switch (expectedLocation) {
case 'props-aligned':
indentation = /^\s*/.exec(context.getSourceCode().lines[tokens.lastProp.firstLine - 1])[0];
indentation = /^\s*/.exec(getSourceCode(context).lines[tokens.lastProp.firstLine - 1])[0];
break;
case 'tag-aligned':
case 'line-aligned':
indentation = /^\s*/.exec(context.getSourceCode().lines[tokens.opening.line - 1])[0];
indentation = /^\s*/.exec(getSourceCode(context).lines[tokens.opening.line - 1])[0];
break;
default:
indentation = '';
Expand All @@ -194,7 +195,7 @@ module.exports = {
* prop and start of opening line.
*/
function getTokensLocations(node) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
const opening = sourceCode.getFirstToken(node).loc.start;
const closing = sourceCode.getLastTokens(node, node.selfClosing ? 2 : 1)[0].loc.start;
const tag = sourceCode.getFirstToken(node.name).loc.start;
Expand Down
9 changes: 5 additions & 4 deletions lib/rules/jsx-curly-brace-presence.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const arrayIncludes = require('array-includes');
const docsUrl = require('../util/docsUrl');
const jsxUtil = require('../util/jsx');
const report = require('../util/report');
const getSourceCode = require('../util/eslint').getSourceCode;

// ------------------------------------------------------------------------------
// Constants
Expand Down Expand Up @@ -176,7 +177,7 @@ module.exports = {

let textToReplace;
if (jsxUtil.isJSX(expression)) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
textToReplace = sourceCode.getText(expression);
} else {
const expressionType = expression && expression.type;
Expand All @@ -188,7 +189,7 @@ module.exports = {
: expression.raw.slice(1, -1)
}"`;
} else if (jsxUtil.isJSX(expression)) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);

textToReplace = sourceCode.getText(expression);
} else {
Expand All @@ -207,7 +208,7 @@ module.exports = {
node: literalNode,
fix(fixer) {
if (jsxUtil.isJSX(literalNode)) {
return fixer.replaceText(literalNode, `{${context.getSourceCode().getText(literalNode)}}`);
return fixer.replaceText(literalNode, `{${getSourceCode(context).getText(literalNode)}}`);
}

// If a HTML entity name is found, bail out because it can be fixed
Expand Down Expand Up @@ -251,7 +252,7 @@ module.exports = {
const expression = JSXExpressionNode.expression;
const expressionType = expression.type;

const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
// Curly braces containing comments are necessary
if (sourceCode.getCommentsInside && sourceCode.getCommentsInside(JSXExpressionNode).length > 0) {
return;
Expand Down
3 changes: 2 additions & 1 deletion lib/rules/jsx-curly-newline.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
'use strict';

const docsUrl = require('../util/docsUrl');
const getSourceCode = require('../util/eslint').getSourceCode;
const report = require('../util/report');

// ------------------------------------------------------------------------------
Expand Down Expand Up @@ -77,7 +78,7 @@ module.exports = {
},

create(context) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
const option = getNormalizedOption(context);

// ----------------------------------------------------------------------
Expand Down
13 changes: 7 additions & 6 deletions lib/rules/jsx-curly-spacing.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

const has = require('object.hasown/polyfill')();
const docsUrl = require('../util/docsUrl');
const getSourceCode = require('../util/eslint').getSourceCode;
const report = require('../util/report');

// ------------------------------------------------------------------------------
Expand Down Expand Up @@ -175,7 +176,7 @@ module.exports = {
* @returns {Object|*|{range, text}}
*/
function fixByTrimmingWhitespace(fixer, fromLoc, toLoc, mode, spacing) {
let replacementText = context.getSourceCode().text.slice(fromLoc, toLoc);
let replacementText = getSourceCode(context).text.slice(fromLoc, toLoc);
if (mode === 'start') {
replacementText = replacementText.replace(/^\s+/gm, '');
} else {
Expand Down Expand Up @@ -206,7 +207,7 @@ module.exports = {
token: token.value,
},
fix(fixer) {
const nextToken = context.getSourceCode().getTokenAfter(token);
const nextToken = getSourceCode(context).getTokenAfter(token);
return fixByTrimmingWhitespace(fixer, token.range[1], nextToken.range[0], 'start', spacing);
},
});
Expand All @@ -227,7 +228,7 @@ module.exports = {
token: token.value,
},
fix(fixer) {
const previousToken = context.getSourceCode().getTokenBefore(token);
const previousToken = getSourceCode(context).getTokenBefore(token);
return fixByTrimmingWhitespace(fixer, previousToken.range[1], token.range[0], 'end', spacing);
},
});
Expand All @@ -247,7 +248,7 @@ module.exports = {
token: token.value,
},
fix(fixer) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
const nextToken = sourceCode.getTokenAfter(token);
let nextComment;

Expand Down Expand Up @@ -284,7 +285,7 @@ module.exports = {
token: token.value,
},
fix(fixer) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
const previousToken = sourceCode.getTokenBefore(token);
let previousComment;

Expand Down Expand Up @@ -370,7 +371,7 @@ module.exports = {
return;
}

const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
const first = sourceCode.getFirstToken(node);
const last = sourceCode.getLastToken(node);
let second = sourceCode.getTokenAfter(first, { includeComments: true });
Expand Down
3 changes: 2 additions & 1 deletion lib/rules/jsx-equals-spacing.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
'use strict';

const docsUrl = require('../util/docsUrl');
const getSourceCode = require('../util/eslint').getSourceCode;
const report = require('../util/report');

// ------------------------------------------------------------------------------
Expand Down Expand Up @@ -59,7 +60,7 @@ module.exports = {
return;
}

const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
const equalToken = sourceCode.getTokenAfter(attrNode.name);
const spacedBefore = sourceCode.isSpaceBetweenTokens(attrNode.name, equalToken);
const spacedAfter = sourceCode.isSpaceBetweenTokens(equalToken, attrNode.value);
Expand Down
5 changes: 3 additions & 2 deletions lib/rules/jsx-fragments.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const variableUtil = require('../util/variable');
const testReactVersion = require('../util/version').testReactVersion;
const docsUrl = require('../util/docsUrl');
const report = require('../util/report');
const getSourceCode = require('../util/eslint').getSourceCode;

// ------------------------------------------------------------------------------
// Rule Definition
Expand Down Expand Up @@ -65,7 +66,7 @@ module.exports = {
}

function getFixerToLong(jsxFragment) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
if (!jsxFragment.closingFragment || !jsxFragment.openingFragment) {
// the old TS parser crashes here
// TODO: FIXME: can we fake these two descriptors?
Expand All @@ -83,7 +84,7 @@ module.exports = {
}

function getFixerToShort(jsxElement) {
const sourceCode = context.getSourceCode();
const sourceCode = getSourceCode(context);
return function fix(fixer) {
let source = sourceCode.getText();
let lengthDiff;
Expand Down
3 changes: 2 additions & 1 deletion lib/rules/jsx-handler-names.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
'use strict';

const docsUrl = require('../util/docsUrl');
const getSourceCode = require('../util/eslint').getSourceCode;
const report = require('../util/report');

// ------------------------------------------------------------------------------
Expand Down Expand Up @@ -129,7 +130,7 @@ module.exports = {

const propKey = typeof node.name === 'object' ? node.name.name : node.name;
const expression = node.value.expression;
const propValue = context.getSourceCode()
const propValue = getSourceCode(context)
.getText(checkInlineFunction && isInlineHandler(node) ? expression.body.callee : expression)
.replace(/\s*/g, '')
.replace(/^this\.|.*::/, '');
Expand Down
3 changes: 2 additions & 1 deletion lib/rules/jsx-indent-props.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@

const astUtil = require('../util/ast');
const docsUrl = require('../util/docsUrl');
const getSourceCode = require('../util/eslint').getSourceCode;
const reportC = require('../util/report');

// ------------------------------------------------------------------------------
Expand Down Expand Up @@ -140,7 +141,7 @@ module.exports = {
* @return {Number} Indent
*/
function getNodeIndent(node) {
let src = context.getSourceCode().getText(node, node.loc.start.column + extraColumnStart);
let src = getSourceCode(context).getText(node, node.loc.start.column + extraColumnStart);
const lines = src.split('\n');
src = lines[0];

Expand Down
Loading

0 comments on commit 26765f9

Please sign in to comment.