From 4b4b1696086ebdb86269175e76dfffff62dfaae9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=AF=E7=84=B6?= Date: Thu, 16 Jun 2022 11:52:23 +0800 Subject: [PATCH 1/2] fix: range matching fails fixes #22 --- lib/rules/no-unsupported-features/es-syntax.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/rules/no-unsupported-features/es-syntax.js b/lib/rules/no-unsupported-features/es-syntax.js index 0eb6862b..0457da30 100644 --- a/lib/rules/no-unsupported-features/es-syntax.js +++ b/lib/rules/no-unsupported-features/es-syntax.js @@ -7,6 +7,7 @@ const { rules: esRules } = require("eslint-plugin-es") const { getInnermostScope } = require("eslint-utils") const { Range } = require("semver") +const rangeSubset = require("semver/ranges/subset") const getConfiguredNodeVersion = require("../../util/get-configured-node-version") const getSemverRange = require("../../util/get-semver-range") const mergeVisitorsInPlace = require("../../util/merge-visitors-in-place") @@ -457,11 +458,11 @@ function defineVisitor(context, options) { return true } - if (aCase.supported instanceof Range) { - return !options.version.intersects(aCase.supported) - } - - return options.version.intersects(getSemverRange(`<${aCase.supported}`)) + const supported = + typeof aCase.supported === "string" + ? getSemverRange(`>=${aCase.supported}`) + : aCase.supported + return !rangeSubset(options.version, supported) } /** From ca775f1d79c1761471b727753ab21490dc9af99e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=AF=E7=84=B6?= Date: Mon, 4 Jul 2022 10:50:24 +0800 Subject: [PATCH 2/2] chore: add a test --- tests/lib/rules/no-unsupported-features/es-syntax.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/lib/rules/no-unsupported-features/es-syntax.js b/tests/lib/rules/no-unsupported-features/es-syntax.js index 575c9c91..694b535b 100644 --- a/tests/lib/rules/no-unsupported-features/es-syntax.js +++ b/tests/lib/rules/no-unsupported-features/es-syntax.js @@ -2493,7 +2493,7 @@ ruleTester.run( })), ], invalid: [ - ...["12.16.0", "13.0.0", "13.1.0"].map(v => ({ + ...["12.16.0", "13.0.0", "13.1.0", ">=8.0.0"].map(v => ({ code: "import(source)", options: [{ version: v }], errors: [