diff --git a/.changeset/great-beds-lick.md b/.changeset/great-beds-lick.md new file mode 100644 index 0000000..245e217 --- /dev/null +++ b/.changeset/great-beds-lick.md @@ -0,0 +1,5 @@ +--- +"@effect/eslint-plugin": patch +--- + +Fix import type \* as ... in barrel import rules diff --git a/src/plugin.ts b/src/plugin.ts index 00f7071..9ebdce4 100644 --- a/src/plugin.ts +++ b/src/plugin.ts @@ -7,7 +7,7 @@ export const meta = { export const rules = { dprint, - noImportFromBarrelPackage, + "no-import-from-barrel-package": noImportFromBarrelPackage, } // NOTE: unfortunately plugins needs a self-reference inside configs, diff --git a/src/rules/no-import-from-barrel-package.ts b/src/rules/no-import-from-barrel-package.ts index f53bed8..7241cfa 100644 --- a/src/rules/no-import-from-barrel-package.ts +++ b/src/rules/no-import-from-barrel-package.ts @@ -41,6 +41,8 @@ export const noImportFromBarrelPackage = createRule<[Options], MessageIds>({ create: (context, options) => { return { ImportDeclaration: node => { + // do not check for type imports + if (node.importKind === "type") return // destruct options const [{ packageNames }] = options // first we check if the import is from one of the configured modules diff --git a/test/no-import-from-barrel-package.test.ts b/test/no-import-from-barrel-package.test.ts index 059e86a..08a4297 100644 --- a/test/no-import-from-barrel-package.test.ts +++ b/test/no-import-from-barrel-package.test.ts @@ -4,15 +4,14 @@ import { ruleTester } from "@effect/eslint-plugin/test/utils/index" const options: [Options] = [{ packageNames: ["effect"] }] -ruleTester.run("dprint", rule, { +ruleTester.run("no-import-from-barrel-package", rule, { valid: [ { code: `import * as T from "effect/Effect"`, options, }, { - code: `import { Effect as Eff} from "effect/Effect" -`, + code: `import { Effect as Eff} from "effect/Effect"`, options, }, { @@ -23,6 +22,10 @@ ruleTester.run("dprint", rule, { code: `import {type Effect } from "effect";`, options, }, + { + code: `import type { Effect } from "effect"`, + options, + }, { code: `import {test} from "lodash";`, options,