From 3dff8caaac16010e2e08fabfd3b8ffe878aae695 Mon Sep 17 00:00:00 2001 From: Sebastian Good <2230835+scagood@users.noreply.github.com> Date: Thu, 3 Jul 2025 23:17:05 +0100 Subject: [PATCH 1/2] test: Add failing test for #453 --- tests/lib/rules/prefer-node-protocol.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/lib/rules/prefer-node-protocol.js b/tests/lib/rules/prefer-node-protocol.js index e010cab6..5be9dd47 100644 --- a/tests/lib/rules/prefer-node-protocol.js +++ b/tests/lib/rules/prefer-node-protocol.js @@ -57,6 +57,10 @@ new RuleTester({ 'const fs = require("eslint-plugin-n");', // check disabling by supported Node.js versions + { + options: [{ version: ">=10.13.0" }], + code: 'import fs from "fs";', + }, { options: [{ version: "12.19.1" }], code: 'import fs from "fs";', From 0aa5cbef08f26446b71979ca3da7f01717371226 Mon Sep 17 00:00:00 2001 From: Sebastian Good <2230835+scagood@users.noreply.github.com> Date: Thu, 3 Jul 2025 23:18:04 +0100 Subject: [PATCH 2/2] fix: correctly handle version ranges in prefer-node-protocol --- lib/rules/prefer-node-protocol.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/lib/rules/prefer-node-protocol.js b/lib/rules/prefer-node-protocol.js index 89622044..1cbfbd1c 100644 --- a/lib/rules/prefer-node-protocol.js +++ b/lib/rules/prefer-node-protocol.js @@ -9,7 +9,7 @@ const { getPropertyName, } = require("@eslint-community/eslint-utils") -const { Range } = require("semver") +const { subset, Range } = require("semver") const getConfiguredNodeVersion = require("../util/get-configured-node-version") const stripImportPathParams = require("../util/strip-import-path-params") @@ -57,15 +57,12 @@ function isEnablingThisRule(context, moduleStyle) { const version = getConfiguredNodeVersion(context) // Only check Node.js version because this rule is meaningless if configured Node.js version doesn't match semver range. - if (!version.intersects(supportedRangeForEsm)) { + if (!subset(version, supportedRangeForEsm)) { return false } // Only check when using `require` - if ( - moduleStyle === "require" && - !version.intersects(supportedRangeForCjs) - ) { + if (moduleStyle === "require" && !subset(version, supportedRangeForCjs)) { return false }