Skip to content

Commit cc4ee65

Browse files
authored
fix(#144): read sourceType w/ both flat/legacy config (#181)
1 parent e01dce0 commit cc4ee65

File tree

6 files changed

+40
-3
lines changed

6 files changed

+40
-3
lines changed

.changeset/ten-lamps-sell.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"eslint-plugin-import-x": patch
3+
---
4+
5+
Fix #144, read proper `sourceType` for both eslint flat config and legacy eslintrc config.

src/rules/no-default-export.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { createRule } from '../utils'
2+
import sourceType from '../utils/source-type'
23

34
export = createRule({
45
name: 'no-default-export',
@@ -18,7 +19,7 @@ export = createRule({
1819
defaultOptions: [],
1920
create(context) {
2021
// ignore non-modules
21-
if (context.parserOptions.sourceType !== 'module') {
22+
if (sourceType(context) !== 'module') {
2223
return {}
2324
}
2425

src/rules/no-named-export.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { createRule } from '../utils'
2+
import sourceType from '../utils/source-type'
23

34
export = createRule({
45
name: 'no-named-export',
@@ -16,7 +17,7 @@ export = createRule({
1617
defaultOptions: [],
1718
create(context) {
1819
// ignore non-modules
19-
if (context.parserOptions.sourceType !== 'module') {
20+
if (sourceType(context) !== 'module') {
2021
return {}
2122
}
2223

src/rules/unambiguous.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44

55
import { createRule, isUnambiguousModule } from '../utils'
6+
import sourceType from '../utils/source-type'
67

78
export = createRule({
89
name: 'unambiguous',
@@ -21,7 +22,7 @@ export = createRule({
2122
defaultOptions: [],
2223
create(context) {
2324
// ignore non-modules
24-
if (context.parserOptions.sourceType !== 'module') {
25+
if (sourceType(context) !== 'module') {
2526
return {}
2627
}
2728

src/utils/source-type.ts

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import type { RuleContext } from '../types'
2+
3+
export default function sourceType(context: RuleContext) {
4+
if ('sourceType' in context.parserOptions) {
5+
return context.parserOptions.sourceType
6+
}
7+
if ('languageOptions' in context && context.languageOptions) {
8+
return context.languageOptions.sourceType
9+
}
10+
}

test/rules/no-default-export.spec.ts

+19
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,25 @@ ruleTester.run('no-default-export', rule, {
165165
},
166166
],
167167
}),
168+
test({
169+
code: "function foo() { return 'foo'; }\nexport default foo;",
170+
filename: 'foo.ts',
171+
errors: [
172+
{
173+
type: 'ExportDefaultDeclaration',
174+
messageId: 'preferNamed',
175+
},
176+
],
177+
languageOptions: {
178+
parserOptions: {
179+
ecmaversion: 'latest',
180+
sourceType: 'module',
181+
},
182+
},
183+
settings: {
184+
'import-x/resolver': { typescript: true },
185+
},
186+
}),
168187
test({
169188
code: 'export default from "foo.js"',
170189
languageOptions: { parser: require(parsers.BABEL) },

0 commit comments

Comments
 (0)