From 92b72401bba1802b0d9499905bed467de58aa70d Mon Sep 17 00:00:00 2001 From: Wondermarin <33459274+Wondermarin@users.noreply.github.com> Date: Fri, 8 Sep 2023 21:21:25 +0300 Subject: [PATCH] fix: prefix-only builtin modules are defined as external modules in sort-imports rule --- rules/sort-imports.ts | 5 ++-- test/sort-imports.test.ts | 48 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/rules/sort-imports.ts b/rules/sort-imports.ts index edb41a52a..a3aa0c284 100644 --- a/rules/sort-imports.ts +++ b/rules/sort-imports.ts @@ -201,8 +201,9 @@ export default createEslintRule, MESSAGE_ID>({ tsPaths.some(pattern => minimatch(nodeElement.source.value, pattern)) let isCoreModule = (value: string) => - builtinModules.includes(value) || - builtinModules.includes(`node:${value}`) + builtinModules.includes( + value.startsWith('node:') ? value.split('node:')[1] : value, + ) if (node.importKind === 'type') { if (node.type === 'ImportDeclaration') { diff --git a/test/sort-imports.test.ts b/test/sort-imports.test.ts index 5b2fc8203..ef5877070 100644 --- a/test/sort-imports.test.ts +++ b/test/sort-imports.test.ts @@ -3232,5 +3232,53 @@ describe(RULE_NAME, () => { invalid: [], }, ) + + ruleTester.run( + `${RULE_NAME}: defines prefix-only builtin modules as core node modules`, + rule, + { + valid: [ + { + code: dedent` + import { writeFile } from 'node:fs/promises' + + import { useEffect } from 'react' + `, + options: [ + { + groups: ['builtin', 'external'], + }, + ], + }, + ], + invalid: [ + { + code: dedent` + import { writeFile } from 'node:fs/promises' + import { useEffect } from 'react' + `, + output: dedent` + import { writeFile } from 'node:fs/promises' + + import { useEffect } from 'react' + `, + options: [ + { + groups: ['builtin', 'external'], + }, + ], + errors: [ + { + messageId: 'missedSpacingBetweenImports', + data: { + left: 'node:fs/promises', + right: 'react', + }, + }, + ], + }, + ], + }, + ) }) })