Skip to content

Commit 7469e59

Browse files
committed
fix(imports-as-dependencies): allow relative paths
Also: - fix: generation of failing/passing examples
1 parent e3b0d0c commit 7469e59

File tree

5 files changed

+97
-3
lines changed

5 files changed

+97
-3
lines changed

.README/rules/imports-as-dependencies.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,10 @@ which is not listed in `dependencies` or `devDependencies`.
1111
|Settings||
1212
|Options||
1313

14-
<!-- assertions importsAsDependencies -->
14+
## Failing examples
15+
16+
<!-- assertions-failing importsAsDependencies -->
17+
18+
## Passing examples
19+
20+
<!-- assertions-passing importsAsDependencies -->

docs/rules/imports-as-dependencies.md

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,75 @@ which is not listed in `dependencies` or `devDependencies`.
1313
|Settings||
1414
|Options||
1515

16-
<!-- assertions importsAsDependencies -->
16+
<a name="user-content-failing-examples"></a>
17+
<a name="failing-examples"></a>
18+
## Failing examples
19+
20+
The following patterns are considered problems:
21+
22+
````js
23+
/**
24+
* @type {null|import('sth').SomeApi}
25+
*/
26+
// Message: import points to package which is not found in dependencies
27+
28+
/**
29+
* @type {null|import('sth').SomeApi}
30+
*/
31+
// Settings: {"jsdoc":{"mode":"permissive"}}
32+
// Message: import points to package which is not found in dependencies
33+
34+
/**
35+
* @type {null|import('missingpackage/subpackage').SomeApi}
36+
*/
37+
// Message: import points to package which is not found in dependencies
38+
39+
/**
40+
* @type {null|import('@sth/pkg').SomeApi}
41+
*/
42+
// Message: import points to package which is not found in dependencies
43+
````
44+
45+
46+
47+
<a name="user-content-passing-examples"></a>
48+
<a name="passing-examples"></a>
49+
## Passing examples
50+
51+
The following patterns are not considered problems:
52+
53+
````js
54+
/**
55+
* @type {null|import('eslint').ESLint}
56+
*/
57+
58+
/**
59+
* @type {null|import('eslint/use-at-your-own-risk').ESLint}
60+
*/
61+
62+
/**
63+
* @type {null|import('@es-joy/jsdoccomment').InlineTag}
64+
*/
65+
66+
/**
67+
* @type {null|import(}
68+
*/
69+
70+
/**
71+
* @type {null|import('esquery').ESQueryOptions}
72+
*/
73+
74+
/**
75+
* @type {null|import('@es-joy/jsdoccomment').InlineTag|
76+
* import('@es-joy/jsdoccomment').JsdocBlock}
77+
*/
78+
79+
/**
80+
* @type {null|import('typescript').Program}
81+
*/
82+
83+
/**
84+
* @type {null|import('./relativePath.js').Program}
85+
*/
86+
````
87+

src/bin/generateRule.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,13 @@ export default iterateJsdoc(({
127127
|Settings||
128128
|Options||
129129
130-
<!-- assertions ${camelCasedRuleName} -->
130+
## Failing examples
131+
132+
<!-- assertions-failing ${camelCasedRuleName} -->
133+
134+
## Passing examples
135+
136+
<!-- assertions-passing ${camelCasedRuleName} -->
131137
`;
132138

133139
const ruleReadmePath = `./.README/rules/${ruleName}.md`;

src/rules/importsAsDependencies.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ export default iterateJsdoc(({
6767
/^(@[^/]+\/[^/]+|[^/]+).*$/u, '$1',
6868
);
6969

70+
if ((/^[./]/u).test(mod)) {
71+
return;
72+
}
73+
7074
if (!moduleCheck.has(mod)) {
7175
let pkg;
7276
try {

test/rules/assertions/importsAsDependencies.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,5 +109,12 @@ export default {
109109
*/
110110
`,
111111
},
112+
{
113+
code: `
114+
/**
115+
* @type {null|import('./relativePath.js').Program}
116+
*/
117+
`,
118+
},
112119
],
113120
};

0 commit comments

Comments
 (0)