Skip to content
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: mysticatea/eslint-plugin-node
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 7f5f729db5d1f0383a05dbfddb0cc34867bdc508
Choose a base ref
..
head repository: mysticatea/eslint-plugin-node
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 1480a8427cd29a382493439d76c6f95abac39009
Choose a head ref
Showing with 29 additions and 6 deletions.
  1. +29 −6 lib/rules/no-unsupported-features/es-syntax.js
35 changes: 29 additions & 6 deletions lib/rules/no-unsupported-features/es-syntax.js
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@

const { rules: esRules } = require("eslint-plugin-es")
const { getInnermostScope } = require("eslint-utils")
const { Range } = require("semver") //eslint-disable-line no-unused-vars
const { Range } = require("semver")
const getConfiguredNodeVersion = require("../../util/get-configured-node-version")
const getSemverRange = require("../../util/get-semver-range")
const mergeVisitorsInPlace = require("../../util/merge-visitors-in-place")
@@ -378,11 +378,29 @@ const features = {
ruleId: "no-dynamic-import",
cases: [
{
supported: null,
supported: new Range(">=12.17 <13 || >=13.2"),
messageId: "no-dynamic-import",
},
],
},
optionalChaining: {
ruleId: "no-optional-chaining",
cases: [
{
supported: "14.0.0",
messageId: "no-optional-chaining",
},
],
},
nullishCoalescingOperators: {
ruleId: "no-nullish-coalescing-operators",
cases: [
{
supported: "14.0.0",
messageId: "no-nullish-coalescing-operators",
},
],
},
}
const keywords = Object.keys(features)

@@ -435,10 +453,15 @@ function defineVisitor(context, options) {
* @returns {boolean} `true` if it's supporting.
*/
function isNotSupportingVersion(aCase) {
return (
!aCase.supported ||
options.version.intersects(getSemverRange(`<${aCase.supported}`))
)
if (!aCase.supported) {
return true
}

if (aCase.supported instanceof Range) {
return !options.version.intersects(aCase.supported)
}

return options.version.intersects(getSemverRange(`<${aCase.supported}`))
}

/**