Skip to content

Commit b5d24c5

Browse files
committed
[Refactor] versionUtil: expand to take a semver range
This would be breaking, but this util isn't part of our API.
1 parent 0f09f81 commit b5d24c5

12 files changed

+56
-69
lines changed

lib/rules/jsx-fragments.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
const elementType = require('jsx-ast-utils/elementType');
99
const pragmaUtil = require('../util/pragma');
1010
const variableUtil = require('../util/variable');
11-
const versionUtil = require('../util/version');
11+
const testReactVersion = require('../util/version').testReactVersion;
1212
const docsUrl = require('../util/docsUrl');
1313
const report = require('../util/report');
1414

@@ -54,7 +54,7 @@ module.exports = {
5454
const closeFragLong = `</${reactPragma}.${fragmentPragma}>`;
5555

5656
function reportOnReactVersion(node) {
57-
if (!versionUtil.testReactVersion(context, '16.2.0')) {
57+
if (!testReactVersion(context, '>= 16.2.0')) {
5858
report(context, messages.fragmentsNotSupported, 'fragmentsNotSupported', {
5959
node,
6060
});

lib/rules/no-deprecated.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const Components = require('../util/Components');
1313
const astUtil = require('../util/ast');
1414
const docsUrl = require('../util/docsUrl');
1515
const pragmaUtil = require('../util/pragma');
16-
const versionUtil = require('../util/version');
16+
const testReactVersion = require('../util/version').testReactVersion;
1717
const report = require('../util/report');
1818

1919
// ------------------------------------------------------------------------------
@@ -114,7 +114,7 @@ module.exports = {
114114
deprecated
115115
&& deprecated[method]
116116
&& deprecated[method][0]
117-
&& versionUtil.testReactVersion(context, deprecated[method][0])
117+
&& testReactVersion(context, `>= ${deprecated[method][0]}`)
118118
);
119119
}
120120

lib/rules/no-render-return-value.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
'use strict';
77

8-
const versionUtil = require('../util/version');
8+
const testReactVersion = require('../util/version').testReactVersion;
99
const docsUrl = require('../util/docsUrl');
1010
const report = require('../util/report');
1111

@@ -37,16 +37,15 @@ module.exports = {
3737
// --------------------------------------------------------------------------
3838

3939
let calleeObjectName = /^ReactDOM$/;
40-
if (versionUtil.testReactVersion(context, '15.0.0')) {
40+
if (testReactVersion(context, '>= 15.0.0')) {
4141
calleeObjectName = /^ReactDOM$/;
42-
} else if (versionUtil.testReactVersion(context, '0.14.0')) {
42+
} else if (testReactVersion(context, '^0.14.0')) {
4343
calleeObjectName = /^React(DOM)?$/;
44-
} else if (versionUtil.testReactVersion(context, '0.13.0')) {
44+
} else if (testReactVersion(context, '^0.13.0')) {
4545
calleeObjectName = /^React$/;
4646
}
4747

4848
return {
49-
5049
CallExpression(node) {
5150
const callee = node.callee;
5251
const parent = node.parent;

lib/rules/no-unknown-property.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
const has = require('object.hasown/polyfill')();
99
const docsUrl = require('../util/docsUrl');
10-
const versionUtil = require('../util/version');
10+
const testReactVersion = require('../util/version').testReactVersion;
1111
const report = require('../util/report');
1212

1313
// ------------------------------------------------------------------------------
@@ -135,7 +135,7 @@ const DOM_PROPERTY_NAMES = [
135135
];
136136
function getDOMPropertyNames(context) {
137137
// this was removed in React v16.1+, see https://github.com/facebook/react/pull/10823
138-
if (!versionUtil.testReactVersion(context, '16.1.0')) {
138+
if (!testReactVersion(context, '>= 16.1.0')) {
139139
return ['allowTransparency'].concat(DOM_PROPERTY_NAMES);
140140
}
141141
return DOM_PROPERTY_NAMES;

lib/rules/no-unsafe.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
const Components = require('../util/Components');
99
const astUtil = require('../util/ast');
1010
const docsUrl = require('../util/docsUrl');
11-
const versionUtil = require('../util/version');
11+
const testReactVersion = require('../util/version').testReactVersion;
1212
const report = require('../util/report');
1313

1414
// ------------------------------------------------------------------------------
@@ -48,7 +48,7 @@ module.exports = {
4848
const config = context.options[0] || {};
4949
const checkAliases = config.checkAliases || false;
5050

51-
const isApplicable = versionUtil.testReactVersion(context, '16.3.0');
51+
const isApplicable = testReactVersion(context, '>= 16.3.0');
5252
if (!isApplicable) {
5353
return {};
5454
}

lib/rules/no-will-update-set-state.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
'use strict';
77

88
const makeNoMethodSetStateRule = require('../util/makeNoMethodSetStateRule');
9-
const versionUtil = require('../util/version');
9+
const testReactVersion = require('../util/version').testReactVersion;
1010

1111
module.exports = makeNoMethodSetStateRule(
1212
'componentWillUpdate',
13-
(context) => versionUtil.testReactVersion(context, '16.3.0')
13+
(context) => testReactVersion(context, '>= 16.3.0')
1414
);

lib/rules/prefer-stateless-function.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
'use strict';
99

1010
const Components = require('../util/Components');
11-
const versionUtil = require('../util/version');
11+
const testReactVersion = require('../util/version').testReactVersion;
1212
const astUtil = require('../util/ast');
1313
const docsUrl = require('../util/docsUrl');
1414
const report = require('../util/report');
@@ -347,7 +347,7 @@ module.exports = {
347347
scope = scope.upper;
348348
}
349349
const isRender = blockNode && blockNode.key && blockNode.key.name === 'render';
350-
const allowNull = versionUtil.testReactVersion(context, '15.0.0'); // Stateless components can return null since React 15
350+
const allowNull = testReactVersion(context, '>= 15.0.0'); // Stateless components can return null since React 15
351351
const isReturningJSX = utils.isReturningJSX(node, !allowNull);
352352
const isReturningNull = node.argument && (node.argument.value === null || node.argument.value === false);
353353
if (

lib/util/makeNoMethodSetStateRule.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ function makeNoMethodSetStateRule(methodName, shouldCheckUnsafeCb) {
6666
// --------------------------------------------------------------------------
6767

6868
return {
69-
7069
CallExpression(node) {
7170
const callee = node.callee;
7271
if (

lib/util/propTypes.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const flatMap = require('array.prototype.flatmap');
99
const annotations = require('./annotations');
1010
const propsUtil = require('./props');
1111
const variableUtil = require('./variable');
12-
const versionUtil = require('./version');
12+
const testFlowVersion = require('./version').testFlowVersion;
1313
const propWrapperUtil = require('./propWrapper');
1414
const astUtil = require('./ast');
1515
const isFirstLetterCapitalized = require('./isFirstLetterCapitalized');
@@ -1080,7 +1080,7 @@ module.exports = function propTypesInstructions(context, components, utils) {
10801080
try {
10811081
// Flow <=0.52 had 3 required TypedParameters of which the second one is the Props.
10821082
// Flow >=0.53 has 2 optional TypedParameters of which the first one is the Props.
1083-
propsParameterPosition = versionUtil.testFlowVersion(context, '0.53.0') ? 0 : 1;
1083+
propsParameterPosition = testFlowVersion(context, '>= 0.53.0') ? 0 : 1;
10841084
} catch (e) {
10851085
// In case there is no flow version defined, we can safely assume that when there are 3 Props we are dealing with version <= 0.52
10861086
propsParameterPosition = node.superTypeParameters.params.length <= 2 ? 0 : 1;

lib/util/usedPropTypes.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
'use strict';
66

77
const astUtil = require('./ast');
8-
const versionUtil = require('./version');
8+
const testReactVersion = require('./version').testReactVersion;
99
const ast = require('./ast');
1010

1111
// ------------------------------------------------------------------------------
@@ -282,7 +282,7 @@ function getPropertyName(node, context, utils, checkAsyncSafeLifeCycles) {
282282
}
283283

284284
module.exports = function usedPropTypesInstructions(context, components, utils) {
285-
const checkAsyncSafeLifeCycles = versionUtil.testReactVersion(context, '16.3.0');
285+
const checkAsyncSafeLifeCycles = testReactVersion(context, '>= 16.3.0');
286286

287287
const propVariables = createPropVariables();
288288
const pushScope = propVariables.pushScope;

0 commit comments

Comments
 (0)