Skip to content

Commit aa7aec9

Browse files
committed
fix: check TSImportType nodes
1 parent 7a990b1 commit aa7aec9

File tree

5 files changed

+84
-2
lines changed

5 files changed

+84
-2
lines changed

eslint.config.test.cjs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,22 @@ module.exports = [
3535
],
3636
},
3737
},
38+
{
39+
...tseslint.configs.base,
40+
files: ['fixture/**/typesNotIgnored.ts'],
41+
plugins: {
42+
'@jcoreio/implicit-dependencies': require('./src/index'),
43+
},
44+
rules: {
45+
'@jcoreio/implicit-dependencies/no-implicit': [
46+
2,
47+
{
48+
dev: true,
49+
ignore: ['blaz', '@ack/glom'],
50+
ignoreTypeOnlyImports: false,
51+
},
52+
],
53+
},
54+
},
3855
]),
3956
]

fixture/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,7 @@ import type {blag} from 'blag'
3737
// @ts-expect-error missing dep
3838
import {type floom, type flam} from 'floom'
3939
// @ts-expect-error missing dep
40-
import {type glarb, blorgh} from 'glarb'
40+
import {type glarb, blorgh} from 'glarb'
41+
42+
// @ts-expect-error missing dep
43+
type X = import('bloop')

fixture/typesNotIgnored.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/* eslint-env commonjs */
2+
3+
require('foo')
4+
import 'bar'
5+
import 'pkg-up'
6+
// @ts-expect-error missing dep
7+
import('qux/gloob')
8+
// @ts-expect-error missing dep
9+
export * from 'blonk'
10+
// @ts-expect-error missing dep
11+
export { blark } from 'blark'
12+
require('@a/b/c')
13+
14+
require('!!raw-loader!./foo/bar')
15+
require('_a-b')
16+
require('AB')
17+
18+
import 'process'
19+
import 'fs/promises'
20+
import 'node:process'
21+
import '@jcoreio/toolchain'
22+
23+
import '@jcoreio/eslint-plugin-implicit-dependencies'
24+
25+
const foo = 1
26+
export { foo }
27+
28+
export default foo
29+
30+
export class Bar {}
31+
32+
import 'blaz'
33+
import '@ack/glom/flark'
34+
35+
// @ts-expect-error missing dep
36+
import type {blag} from 'blag'
37+
// @ts-expect-error missing dep
38+
import {type floom, type flam} from 'floom'
39+
// @ts-expect-error missing dep
40+
import {type glarb, blorgh} from 'glarb'
41+
42+
// @ts-expect-error missing dep
43+
type X = import('bloop')

src/rules/no-implicit-dependencies.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ export default {
128128
const name = node.source?.value
129129
checkModuleName(name, node)
130130
},
131+
'TSImportType:exit': (node) => {
132+
const name = (node.parameter || node.argument)?.literal.value
133+
if (!context.options[0]?.ignoreTypeOnlyImports) {
134+
checkModuleName(name, node)
135+
}
136+
},
131137
}
132138
},
133139
}

test/index.js

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import execa from '@jcoreio/toolchain/util/execa.cjs'
99
import dedent from 'dedent-js'
1010

1111
it(`works`, async function () {
12+
this.timeout(10000)
1213
expect(
1314
(
1415
await execa(
@@ -36,7 +37,19 @@ it(`works`, async function () {
3637
12:1 error Module "@a/b" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
3738
40:1 error Module "glarb" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
3839
39-
✖ 13 problems (13 errors, 0 warnings)
40+
${process.cwd()}/fixture/typesNotIgnored.ts
41+
3:1 error Module "foo" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
42+
4:1 error Module "bar" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
43+
7:1 error Module "qux" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
44+
9:1 error Module "blonk" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
45+
11:1 error Module "blark" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
46+
12:1 error Module "@a/b" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
47+
36:1 error Module "blag" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
48+
38:1 error Module "floom" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
49+
40:1 error Module "glarb" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
50+
43:10 error Module "bloop" is not listed as a dependency in package.json @jcoreio/implicit-dependencies/no-implicit
51+
52+
✖ 23 problems (23 errors, 0 warnings)
4053
`.trim()
4154
)
4255
})

0 commit comments

Comments
 (0)