Skip to content

Commit 4967750

Browse files
fix: don't require ts when not wanted
1 parent 8f56534 commit 4967750

File tree

4 files changed

+73
-49
lines changed

4 files changed

+73
-49
lines changed

scripts/typegen.ts

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ const configs = (await combine(
5050
}),
5151
imports({
5252
stylistic: false,
53+
typescript: false,
5354
parserOptions: {},
5455
filesTypeAware: [],
5556
}),

src/configs/formatters.ts

+17-17
Original file line numberDiff line numberDiff line change
@@ -272,23 +272,23 @@ export async function formatters(
272272
"style/ts/space-infix-ops": "off",
273273
"style/ts/type-annotation-spacing": "off",
274274

275-
"@typescript-eslint/block-spacing": "off",
276-
"@typescript-eslint/brace-style": "off",
277-
"@typescript-eslint/comma-dangle": "off",
278-
"@typescript-eslint/comma-spacing": "off",
279-
"@typescript-eslint/func-call-spacing": "off",
280-
"@typescript-eslint/indent": "off",
281-
"@typescript-eslint/key-spacing": "off",
282-
"@typescript-eslint/keyword-spacing": "off",
283-
"@typescript-eslint/member-delimiter-style": "off",
284-
"@typescript-eslint/no-extra-parens": "off",
285-
"@typescript-eslint/no-extra-semi": "off",
286-
"@typescript-eslint/object-curly-spacing": "off",
287-
"@typescript-eslint/semi": "off",
288-
"@typescript-eslint/space-before-blocks": "off",
289-
"@typescript-eslint/space-before-function-paren": "off",
290-
"@typescript-eslint/space-infix-ops": "off",
291-
"@typescript-eslint/type-annotation-spacing": "off",
275+
"ts/block-spacing": "off",
276+
"ts/brace-style": "off",
277+
"ts/comma-dangle": "off",
278+
"ts/comma-spacing": "off",
279+
"ts/func-call-spacing": "off",
280+
"ts/indent": "off",
281+
"ts/key-spacing": "off",
282+
"ts/keyword-spacing": "off",
283+
"ts/member-delimiter-style": "off",
284+
"ts/no-extra-parens": "off",
285+
"ts/no-extra-semi": "off",
286+
"ts/object-curly-spacing": "off",
287+
"ts/semi": "off",
288+
"ts/space-before-blocks": "off",
289+
"ts/space-before-function-paren": "off",
290+
"ts/space-infix-ops": "off",
291+
"ts/type-annotation-spacing": "off",
292292

293293
"unicorn/empty-brace-spaces": "off",
294294
"unicorn/no-nested-ternary": "off",

src/configs/imports.ts

+54-32
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,31 @@ import type { ESLint } from "eslint";
33
import { GLOB_DTS, GLOB_MJS, GLOB_MTS, GLOB_TS, GLOB_TSX } from "../globs";
44
import type {
55
FlatConfigItem,
6+
OptionsHasTypeScript,
67
OptionsTypeScriptParserOptions,
78
RequiredOptionsStylistic,
89
} from "../types";
910
import { loadPackages } from "../utils";
1011

1112
export async function imports(
1213
options: Readonly<
13-
Required<RequiredOptionsStylistic & OptionsTypeScriptParserOptions>
14+
Required<
15+
RequiredOptionsStylistic &
16+
OptionsTypeScriptParserOptions &
17+
OptionsHasTypeScript
18+
>
1419
>,
1520
): Promise<FlatConfigItem[]> {
16-
const { stylistic, parserOptions } = options;
21+
const { stylistic, parserOptions, typescript } = options;
1722

18-
const [pluginImport] = (await loadPackages([
19-
"eslint-plugin-import-x",
20-
"eslint-import-resolver-typescript",
21-
])) as [ESLint.Plugin, ESLint.Plugin];
22-
23-
const stylisticEnforcement = stylistic === false ? "off" : "error";
23+
const [pluginImport] = (await loadPackages(
24+
typescript
25+
? [
26+
"eslint-plugin-import-x",
27+
"eslint-import-resolver-typescript", // make sure it exists - we only implicitly use it
28+
]
29+
: ["eslint-plugin-import-x"],
30+
)) as [ESLint.Plugin] | [ESLint.Plugin, unknown];
2431

2532
return [
2633
{
@@ -36,16 +43,24 @@ export async function imports(
3643
"import-x/internal-regex": "^(?:#|(?:@|~)\\/).*",
3744
"import-x/extensions": [".ts", ".tsx", ".js", ".jsx"],
3845
"import-x/parsers": {
39-
"@typescript-eslint/parser": [".ts", ".tsx", ".cts", ".mts"],
46+
...(typescript
47+
? {
48+
"@typescript-eslint/parser": [".ts", ".tsx", ".cts", ".mts"],
49+
}
50+
: undefined),
4051
},
4152
"import-x/resolver": {
42-
typescript: {
43-
alwaysTryTypes: true,
44-
projectService: parserOptions.projectService,
45-
},
4653
node: {
4754
extensions: [".ts", ".tsx", ".js", ".jsx"],
4855
},
56+
...(typescript
57+
? {
58+
typescript: {
59+
alwaysTryTypes: true,
60+
projectService: parserOptions.projectService,
61+
},
62+
}
63+
: undefined),
4964
},
5065
},
5166
rules: {
@@ -139,9 +154,12 @@ export async function imports(
139154
// "import/prefer-default-export": "off",
140155
// "import/unambiguous": "off",
141156

142-
"import/newline-after-import": [stylisticEnforcement, { count: 1 }],
157+
"import/newline-after-import": [
158+
stylistic === false ? "off" : "error",
159+
{ count: 1 },
160+
],
143161
"import/order": [
144-
stylisticEnforcement,
162+
stylistic === false ? "off" : "error",
145163
{
146164
alphabetize: {
147165
caseInsensitive: false,
@@ -167,24 +185,28 @@ export async function imports(
167185
"import/no-dynamic-require": "error",
168186
},
169187
},
170-
{
171-
files: [GLOB_TS, GLOB_TSX, GLOB_DTS],
172-
rules: {
173-
"import/no-unresolved": "off",
174-
"import/named": "off",
175-
"import/default": "off",
176-
"import/namespace": "off",
177-
178-
"ts/no-import-type-side-effects": "error",
179-
"ts/consistent-type-imports": [
180-
stylisticEnforcement,
188+
...((typescript
189+
? [
181190
{
182-
prefer: "type-imports",
183-
fixStyle: "inline-type-imports",
184-
disallowTypeAnnotations: false,
191+
files: [GLOB_TS, GLOB_TSX, GLOB_DTS],
192+
rules: {
193+
"import/no-unresolved": "off",
194+
"import/named": "off",
195+
"import/default": "off",
196+
"import/namespace": "off",
197+
198+
"ts/no-import-type-side-effects": "error",
199+
"ts/consistent-type-imports": [
200+
stylistic === false ? "off" : "error",
201+
{
202+
prefer: "type-imports",
203+
fixStyle: "inline-type-imports",
204+
disallowTypeAnnotations: false,
205+
},
206+
],
207+
},
185208
},
186-
],
187-
},
188-
},
209+
]
210+
: []) satisfies FlatConfigItem[]),
189211
];
190212
}

src/factory.ts

+1
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ export async function rsEslint(
201201
imports({
202202
...typescriptConfigOptions,
203203
stylistic: stylisticOptions,
204+
typescript: hasTypeScript,
204205
}),
205206
jsdoc({
206207
stylistic: stylisticOptions,

0 commit comments

Comments
 (0)