Skip to content

Commit 0490a67

Browse files
feat: enforce non-sloppy imports for library code
1 parent ff6a70c commit 0490a67

File tree

3 files changed

+26
-2
lines changed

3 files changed

+26
-2
lines changed

scripts/typegen.ts

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ const configs = (await combine(
5656
typescript: false,
5757
parserOptions: {},
5858
filesTypeAware: [],
59+
mode: "none",
5960
}),
6061
inEditor(),
6162
javascript({

src/configs/imports.ts

+24-2
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
import type { ESLint } from "eslint";
22

3-
import { GLOB_DTS, GLOB_MJS, GLOB_MTS, GLOB_SRC_EXT, GLOB_TS, GLOB_TSX } from "../globs";
3+
import { GLOB_DTS, GLOB_MJS, GLOB_MTS, GLOB_SRC, GLOB_SRC_EXT, GLOB_TS, GLOB_TSX } from "../globs";
44
import type {
55
FlatConfigItem,
66
OptionsHasTypeScript,
7+
OptionsMode,
78
OptionsTypeScriptParserOptions,
89
RequiredOptionsStylistic,
910
} from "../types";
1011
import { loadPackages } from "../utils";
1112

1213
export async function imports(
13-
options: Readonly<Required<RequiredOptionsStylistic & OptionsTypeScriptParserOptions & OptionsHasTypeScript>>,
14+
options: Readonly<
15+
Required<RequiredOptionsStylistic & OptionsTypeScriptParserOptions & OptionsHasTypeScript & OptionsMode>
16+
>,
1417
): Promise<FlatConfigItem[]> {
1518
const { stylistic, parserOptions, typescript } = options;
1619

@@ -191,5 +194,24 @@ export async function imports(
191194
},
192195
]
193196
: []) satisfies FlatConfigItem[]),
197+
...((options.mode === "library"
198+
? [
199+
{
200+
files: [GLOB_SRC],
201+
rules: {
202+
// Use non-sloppy imports. See: https://jsr.io/docs/publishing-packages#relative-imports
203+
"import/extensions": [
204+
"error",
205+
"always",
206+
{
207+
checkTypeImports: true,
208+
ignorePackages: true,
209+
},
210+
],
211+
"import/no-useless-path-segments": ["error", { noUselessIndex: false }],
212+
},
213+
},
214+
]
215+
: []) satisfies FlatConfigItem[]),
194216
];
195217
}

src/factory.ts

+1
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ export async function rsEslint(
198198
...typescriptConfigOptions,
199199
stylistic: stylisticOptions,
200200
typescript: hasTypeScript,
201+
mode,
201202
}),
202203
jsdoc({
203204
stylistic: stylisticOptions,

0 commit comments

Comments
 (0)