@shayanthenerd/eslint-config 0.25.0 → 0.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -58
- package/dist/configs/base.mjs +1 -1
- package/dist/configs/baseline.mjs +22 -0
- package/dist/configs/css.mjs +6 -6
- package/dist/configs/html.mjs +7 -7
- package/dist/configs/next.mjs +20 -0
- package/dist/configs/react.mjs +29 -0
- package/dist/helpers/globs.mjs +2 -1
- package/dist/helpers/ignores/defaultIgnorePatterns.mjs +2 -0
- package/dist/helpers/isPackageDetected.mjs +1 -1
- package/dist/helpers/options/defaultOptions.mjs +47 -8
- package/dist/helpers/options/enableDetectedConfigs.mjs +6 -1
- package/dist/index.mjs +11 -5
- package/dist/prettier.config.mjs +1 -1
- package/dist/rules/astro.mjs +1 -0
- package/dist/rules/baseline.mjs +23 -0
- package/dist/rules/css.mjs +27 -6
- package/dist/rules/html.mjs +7 -7
- package/dist/rules/javascript.mjs +1 -2
- package/dist/rules/next.mjs +28 -0
- package/dist/rules/packageJson.mjs +1 -1
- package/dist/rules/react.mjs +160 -0
- package/dist/rules/typescript.mjs +1 -0
- package/dist/rules/unicorn.mjs +97 -1
- package/dist/rules/vue.mjs +2 -2
- package/dist/types/eslint-schema.d.mts +2384 -348
- package/dist/types/index.d.mts +55 -22
- package/dist/types/options/baseline.d.mts +106 -0
- package/dist/types/options/nuxt.d.mts +1 -2
- package/dist/types/options/react.d.mts +50 -0
- package/dist/types/options/stylistic.d.mts +1 -1
- package/dist/types/options/test.d.mts +1 -1
- package/package.json +21 -16
- package/dist/types/options/css.d.mts +0 -27
- package/dist/types/options/html.d.mts +0 -27
- package/dist/types/options/perfectionist.d.mts +0 -18
package/dist/types/index.d.mts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import { PluginRules } from "./eslintRules.mjs";
|
|
2
|
-
import { CSSOptions } from "./options/css.mjs";
|
|
1
|
+
import { PluginRules, RuleOptions } from "./eslintRules.mjs";
|
|
3
2
|
import { VueOptions } from "./options/vue.mjs";
|
|
4
3
|
import { ZodOptions } from "./options/zod.mjs";
|
|
5
4
|
import { BaseOptions } from "./options/base.mjs";
|
|
6
|
-
import { HTMLOptions } from "./options/html.mjs";
|
|
7
5
|
import { NuxtOptions } from "./options/nuxt.mjs";
|
|
8
6
|
import { TestOptions } from "./options/test.mjs";
|
|
7
|
+
import { ReactOptions } from "./options/react.mjs";
|
|
8
|
+
import { BaselineOptions } from "./options/baseline.mjs";
|
|
9
9
|
import { MarkdownOptions } from "./options/markdown.mjs";
|
|
10
10
|
import { TailwindOptions } from "./options/tailwind.mjs";
|
|
11
11
|
import { StylisticOptions } from "./options/stylistic.mjs";
|
|
12
12
|
import { TypeScriptOptions } from "./options/typescript.mjs";
|
|
13
|
-
import { PerfectionistOptions } from "./options/perfectionist.mjs";
|
|
14
13
|
import { Linter } from "eslint";
|
|
15
14
|
|
|
16
15
|
//#region src/types/index.d.ts
|
|
@@ -40,17 +39,15 @@ interface Options {
|
|
|
40
39
|
*/
|
|
41
40
|
autoDetectDeps?: boolean | 'verbose';
|
|
42
41
|
/**
|
|
43
|
-
* Specify the runtime environment
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* @default 'node'
|
|
53
|
-
*/
|
|
42
|
+
* Specify the runtime environment.
|
|
43
|
+
*
|
|
44
|
+
* This is used by
|
|
45
|
+
* - `configs.useBaseline` option (disabled when `env` is set to a value other than `'browser'`)
|
|
46
|
+
* - [ESLint: Specifying Globals](https://eslint.org/docs/latest/use/configure/language-options#using-configuration-files)
|
|
47
|
+
* - [perfectionist/sort-imports: `env` option](https://perfectionist.dev/rules/sort-imports#environment)
|
|
48
|
+
*
|
|
49
|
+
* @default 'browser'
|
|
50
|
+
*/
|
|
54
51
|
env?: 'bun' | 'deno' | 'node' | 'browser';
|
|
55
52
|
/**
|
|
56
53
|
* Path to the _.gitignore_ file (relative to the current working directory).
|
|
@@ -246,7 +243,7 @@ interface Options {
|
|
|
246
243
|
*/
|
|
247
244
|
configs?: {
|
|
248
245
|
/**
|
|
249
|
-
* Use [eslint-plugin-astro](https://ota-meshi.github.io/eslint-plugin-astro) to enforce Astro best practices and accessibility guidelines.
|
|
246
|
+
* Use [eslint-plugin-astro](https://ota-meshi.github.io/eslint-plugin-astro) and [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) to enforce Astro best practices and accessibility guidelines.
|
|
250
247
|
*
|
|
251
248
|
* @default false // `true` if "astro" is detected in the dependencies when `autoDetectDeps` is enabled
|
|
252
249
|
*/
|
|
@@ -262,13 +259,22 @@ interface Options {
|
|
|
262
259
|
*
|
|
263
260
|
* @default false
|
|
264
261
|
*/
|
|
265
|
-
css?: boolean |
|
|
262
|
+
css?: boolean | ConfigWithOverrides<PluginRules<'css'>>;
|
|
266
263
|
/**
|
|
267
264
|
* Use [@html-eslint/eslint-plugin](https://html-eslint.org) to enforce SEO and accessibility best practices, as well as some stylistic rules.
|
|
268
265
|
*
|
|
269
266
|
* @default false
|
|
270
267
|
*/
|
|
271
|
-
html?: boolean |
|
|
268
|
+
html?: boolean | (ConfigWithOverrides<PluginRules<'@html-eslint'>> & {
|
|
269
|
+
/**
|
|
270
|
+
* Enforce consistent naming convention for `id` attribute values.
|
|
271
|
+
*
|
|
272
|
+
* @default 'snake_case'
|
|
273
|
+
*
|
|
274
|
+
* @see [@html-eslint/id-naming-convention](https://html-eslint.org/docs/rules/id-naming-convention)
|
|
275
|
+
*/
|
|
276
|
+
idNamingConvention?: Exclude<RuleOptions<'@html-eslint/id-naming-convention'>, 'regex'>;
|
|
277
|
+
});
|
|
272
278
|
/**
|
|
273
279
|
* Use [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) to organize imports and exports, and detect related issues.
|
|
274
280
|
*
|
|
@@ -281,6 +287,12 @@ interface Options {
|
|
|
281
287
|
* @default true
|
|
282
288
|
*/
|
|
283
289
|
markdown?: boolean | MarkdownOptions;
|
|
290
|
+
/**
|
|
291
|
+
* Use [@next/eslint-plugin-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-plugin-next) to enforce Next.js best practices and catch common mistakes.
|
|
292
|
+
*
|
|
293
|
+
* @default false // `true` if "next" is detected in the dependencies when `autoDetectDeps` is enabled
|
|
294
|
+
*/
|
|
295
|
+
next?: boolean | ConfigWithOverrides<PluginRules<'next'>>;
|
|
284
296
|
/**
|
|
285
297
|
* Use [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) to enforce Node.js best practices and catch common mistakes.
|
|
286
298
|
*
|
|
@@ -310,13 +322,28 @@ interface Options {
|
|
|
310
322
|
*
|
|
311
323
|
* @default true
|
|
312
324
|
*/
|
|
313
|
-
perfectionist?: boolean |
|
|
325
|
+
perfectionist?: boolean | (ConfigWithOverrides<PluginRules<'perfectionist'>> & {
|
|
326
|
+
/**
|
|
327
|
+
* The type of sorting.
|
|
328
|
+
*
|
|
329
|
+
* @default 'line-length'
|
|
330
|
+
*
|
|
331
|
+
* @see [Perfectionist Settings: `type` option](https://perfectionist.dev/guide/getting-started#settings)
|
|
332
|
+
*/
|
|
333
|
+
sortType?: Exclude<RuleOptions<'perfectionist/sort-imports'>['type'], 'type-import-first'>;
|
|
334
|
+
});
|
|
314
335
|
/**
|
|
315
336
|
* Use [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) to enforce best practices for JavaScript promises.
|
|
316
337
|
*
|
|
317
338
|
* @default true
|
|
318
339
|
*/
|
|
319
340
|
promise?: boolean | ConfigWithOverrides<PluginRules<'promise'>>;
|
|
341
|
+
/**
|
|
342
|
+
* Use [@eslint-react/eslint-plugin](https://eslint-react.xyz), [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y), and [@html-eslint/eslint-plugin-react](https://html-eslint.org/docs/react/getting-started) to enforce React best practices and accessibility guidelines.
|
|
343
|
+
*
|
|
344
|
+
* @default false // `true` if "react" is detected in the dependencies when `autoDetectDeps` is enabled
|
|
345
|
+
*/
|
|
346
|
+
react?: boolean | ReactOptions;
|
|
320
347
|
/**
|
|
321
348
|
* Use [@stylistic/eslint-plugin](https://eslint.style) to enforce stylistic rules such as indentation, line length, spacing, quotes, semicolons, etc.
|
|
322
349
|
*
|
|
@@ -334,11 +361,11 @@ interface Options {
|
|
|
334
361
|
*/
|
|
335
362
|
test?: TestOptions;
|
|
336
363
|
/**
|
|
337
|
-
* Use [typescript-eslint](https://typescript-eslint.io) to enforce TypeScript-specific rules.
|
|
364
|
+
* Use [@typescript-eslint](https://typescript-eslint.io) to enforce TypeScript-specific rules.
|
|
338
365
|
*
|
|
339
366
|
* Setting this to `false` doesn't prevent ESLint from linting TypeScript files.
|
|
340
367
|
*
|
|
341
|
-
* This
|
|
368
|
+
* This allows
|
|
342
369
|
* - [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) to better understand imports from TypeScript files such as ".ts", ".tsx", etc.
|
|
343
370
|
* - [eslint-plugin-vue](https://eslint.vuejs.org) to enforce TypeScript-specific rules in the `<script setup lang="ts">` of Vue SFCs.
|
|
344
371
|
*
|
|
@@ -351,6 +378,12 @@ interface Options {
|
|
|
351
378
|
* @default true
|
|
352
379
|
*/
|
|
353
380
|
unicorn?: boolean | ConfigWithOverrides<PluginRules<'unicorn'>>;
|
|
381
|
+
/**
|
|
382
|
+
* Use [eslint-plugin-baseline-js](https://github.com/3ru/eslint-plugin-baseline-js), [css/use-baseline](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#options), [@html-eslint/use-baseline](https://html-eslint.org/docs/rules/use-baseline#options), and [@html-eslint/react/use-baseline](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#options) to enforce the use of baseline features.
|
|
383
|
+
*
|
|
384
|
+
* @default true // `false` if `env` is set to a value other than `'browser'`
|
|
385
|
+
*/
|
|
386
|
+
useBaseline?: boolean | BaselineOptions;
|
|
354
387
|
/**
|
|
355
388
|
* Use [eslint-plugin-vue](https://eslint.vuejs.org) to enforce Vue best practices, accessibility guidelines, stylistic rules, and identify mistakes.
|
|
356
389
|
*
|
|
@@ -358,7 +391,7 @@ interface Options {
|
|
|
358
391
|
*/
|
|
359
392
|
vue?: boolean | VueOptions;
|
|
360
393
|
/**
|
|
361
|
-
* Use [eslint-plugin-zod](https://github.com/marcalexiei/eslint-zod/tree/main/plugins/eslint-plugin-zod) or [eslint-plugin-zod-mini](https://github.com/marcalexiei/eslint-zod/tree/main/plugins/eslint-plugin-zod-mini) to enforce best practices for Zod schemas.
|
|
394
|
+
* Use [eslint-plugin-zod](https://github.com/marcalexiei/eslint-zod/tree/main/plugins/eslint-plugin-zod) or [eslint-plugin-zod-mini](https://github.com/marcalexiei/eslint-zod/tree/main/plugins/eslint-plugin-zod-mini) to enforce best practices for defining Zod schemas.
|
|
362
395
|
*
|
|
363
396
|
* @default false // `true` if "zod" is detected in the dependencies when `autoDetectDeps` is enabled
|
|
364
397
|
*/
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { PluginRules, RuleOptions } from "../eslintRules.mjs";
|
|
2
|
+
import { ConfigWithOverrides } from "../index.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/types/options/baseline.d.ts
|
|
5
|
+
type ConfigRules = PluginRules<'baseline-js'>;
|
|
6
|
+
type CssBaselineOptions = RuleOptions<'css/use-baseline'>;
|
|
7
|
+
interface BaselineOptions extends ConfigWithOverrides<ConfigRules> {
|
|
8
|
+
/**
|
|
9
|
+
* Enforce the use of baseline features in HTML, CSS, JavaScript, and React.
|
|
10
|
+
*
|
|
11
|
+
* Aside from `'widely'` and `'newly'`, it can also be set to a numeric baseline year, such as `2025`, to allow features that became baseline newly available that year or earlier. Minimum numeric baseline year is `2000`.
|
|
12
|
+
*
|
|
13
|
+
* @default 'widely'
|
|
14
|
+
*
|
|
15
|
+
* @see [@typescript-eslint/method-signature-style](https://typescript-eslint.io/rules/method-signature-style)
|
|
16
|
+
*/
|
|
17
|
+
baseline?: RuleOptions<'baseline-js/use-baseline'>['available'];
|
|
18
|
+
/**
|
|
19
|
+
* Allow certain CSS features to be used even if they are not baseline features.
|
|
20
|
+
*
|
|
21
|
+
* @see [css/use-baseline: options](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#options)
|
|
22
|
+
*/
|
|
23
|
+
css?: {
|
|
24
|
+
/**
|
|
25
|
+
* At-rules that are allowed to be used regardless of the baseline.
|
|
26
|
+
*
|
|
27
|
+
* @default []
|
|
28
|
+
*
|
|
29
|
+
* @see [css/use-baseline: `allowedAtRules` option](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#allowatrules)
|
|
30
|
+
*/
|
|
31
|
+
allowedAtRules?: CssBaselineOptions['allowAtRules'];
|
|
32
|
+
/**
|
|
33
|
+
* Functions that are allowed to be used regardless of the baseline.
|
|
34
|
+
*
|
|
35
|
+
* @default []
|
|
36
|
+
*
|
|
37
|
+
* @see [css/use-baseline: `allowedFunctions` option](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#allowfunctions)
|
|
38
|
+
*/
|
|
39
|
+
allowedFunctions?: CssBaselineOptions['allowFunctions'];
|
|
40
|
+
/**
|
|
41
|
+
* Media conditions inside `@media` that are allowed to be used regardless of the baseline.
|
|
42
|
+
*
|
|
43
|
+
* @default []
|
|
44
|
+
*
|
|
45
|
+
* @see [css/use-baseline: `allowedMediaConditions` option](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#allowmediaconditions)
|
|
46
|
+
*/
|
|
47
|
+
allowedMediaConditions?: CssBaselineOptions['allowMediaConditions'];
|
|
48
|
+
/**
|
|
49
|
+
* Properties that are allowed to be used regardless of the baseline.
|
|
50
|
+
*
|
|
51
|
+
* @default []
|
|
52
|
+
*
|
|
53
|
+
* @see [css/use-baseline: `allowedProperties` option](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#allowproperties)
|
|
54
|
+
*/
|
|
55
|
+
allowedProperties?: CssBaselineOptions['allowProperties'];
|
|
56
|
+
/**
|
|
57
|
+
* Properties that are allowed to be used regardless of the baseline, mapped to their allowed identifier values.
|
|
58
|
+
*
|
|
59
|
+
* @default {}
|
|
60
|
+
*
|
|
61
|
+
* @see [css/use-baseline: `allowedPropertyValues` option](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#allowpropertyvalues)
|
|
62
|
+
*/
|
|
63
|
+
allowedPropertyValues?: Partial<CssBaselineOptions['allowPropertyValues']>;
|
|
64
|
+
/**
|
|
65
|
+
* Selectors that are allowed to be used regardless of the baseline.
|
|
66
|
+
*
|
|
67
|
+
* @default []
|
|
68
|
+
*
|
|
69
|
+
* @see [css/use-baseline: `allowedSelectors` option](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#allowselectors)
|
|
70
|
+
*/
|
|
71
|
+
allowedSelectors?: CssBaselineOptions['allowSelectors'];
|
|
72
|
+
/**
|
|
73
|
+
* Units that are allowed to be used regardless of the baseline.
|
|
74
|
+
*
|
|
75
|
+
* @default []
|
|
76
|
+
*
|
|
77
|
+
* @see [css/use-baseline: `allowedUnits` option](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md#allowunits)
|
|
78
|
+
*/
|
|
79
|
+
allowedUnits?: CssBaselineOptions['allowUnits'];
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Allow certain JavaScript features to be used even if they are not baseline features.
|
|
83
|
+
*
|
|
84
|
+
* @see [baseline-js/use-baseline: options](https://github.com/eslint/baseline-js/blob/main/docs/rules/use-baseline.md#options)
|
|
85
|
+
*/
|
|
86
|
+
javascript?: {
|
|
87
|
+
/**
|
|
88
|
+
* Feature IDs or regex patterns for features that are allowed to be used regardless of the baseline.
|
|
89
|
+
*
|
|
90
|
+
* @default []
|
|
91
|
+
*
|
|
92
|
+
* @see [baseline-js/use-baseline: `ignoreFeatures` option](https://github.com/3ru/eslint-plugin-baseline-js#options-rule)
|
|
93
|
+
*/
|
|
94
|
+
ignoredFeatures?: RuleOptions<'baseline-js/use-baseline'>['ignoreFeatures'];
|
|
95
|
+
/**
|
|
96
|
+
* ESTree `node.type`s or regex patterns for node types that are allowed to be used regardless of the baseline.
|
|
97
|
+
*
|
|
98
|
+
* @default []
|
|
99
|
+
*
|
|
100
|
+
* @see [baseline-js/use-baseline: `ignoreNodeTypes` option](https://github.com/3ru/eslint-plugin-baseline-js#options-rule)
|
|
101
|
+
*/
|
|
102
|
+
ignoredNodeTypes?: RuleOptions<'baseline-js/use-baseline'>['ignoreNodeTypes'];
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
export type { BaselineOptions };
|
|
@@ -13,8 +13,7 @@ interface NuxtOptions {
|
|
|
13
13
|
/**
|
|
14
14
|
* The name of the icon component.
|
|
15
15
|
*
|
|
16
|
-
* This is used by
|
|
17
|
-
* [vue/no-undef-components](https://eslint.vuejs.org/rules/no-undef-components)
|
|
16
|
+
* This is used by [vue/no-undef-components](https://eslint.vuejs.org/rules/no-undef-components)
|
|
18
17
|
* to detect the icon component.
|
|
19
18
|
*
|
|
20
19
|
* It will fall back to the default value if set to an empty string (`''`).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { PluginRules, RuleOptions } from "../eslintRules.mjs";
|
|
2
|
+
import { ConfigWithOverrides } from "../index.mjs";
|
|
3
|
+
|
|
4
|
+
//#region src/types/options/react.d.ts
|
|
5
|
+
type ConfigRules = PluginRules<'react'>;
|
|
6
|
+
interface ReactOptions extends ConfigWithOverrides<ConfigRules> {
|
|
7
|
+
/**
|
|
8
|
+
* Use [eslint-plugin-jsx-a11y](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y) and [@html-eslint/eslint-plugin-react](https://html-eslint.org/docs/react/getting-started) to enforce accessibility standards for React components.
|
|
9
|
+
*
|
|
10
|
+
* @default true
|
|
11
|
+
*/
|
|
12
|
+
accessibility?: boolean | {
|
|
13
|
+
/**
|
|
14
|
+
* Names of components that render an `<a>` element.
|
|
15
|
+
*
|
|
16
|
+
* New items extend the defaults instead of overriding them.
|
|
17
|
+
*
|
|
18
|
+
* This is used by
|
|
19
|
+
* - [jsx-a11y/anchor-has-content: `components` option](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-has-content.md#rule-options)
|
|
20
|
+
* - [jsx-a11y/anchor-is-valid: `components` option](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/anchor-is-valid.md#rule-options)
|
|
21
|
+
*
|
|
22
|
+
* @default ['Link', 'NextLink', 'NavLink']
|
|
23
|
+
*/
|
|
24
|
+
anchorComponents?: RuleOptions<'jsx-a11y/anchor-has-content'>['components'];
|
|
25
|
+
/**
|
|
26
|
+
* Names of components that render a heading (`<h1>`...`<h6>`) element.
|
|
27
|
+
*
|
|
28
|
+
* New items extend the defaults instead of overriding them.
|
|
29
|
+
*
|
|
30
|
+
* @default ['H1', 'H2', 'H3', 'H4', 'H5', 'H6']
|
|
31
|
+
*
|
|
32
|
+
* @see [jsx-a11y/heading-has-content: `components` option](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/heading-has-content.md#rule-options)
|
|
33
|
+
*/
|
|
34
|
+
headingComponents?: RuleOptions<'jsx-a11y/heading-has-content'>['components'];
|
|
35
|
+
/**
|
|
36
|
+
* Names of components that render an `<img>` element.
|
|
37
|
+
*
|
|
38
|
+
* New items extend the defaults instead of overriding them.
|
|
39
|
+
*
|
|
40
|
+
* This is used by
|
|
41
|
+
* - [jsx-a11y/alt-text: `img` option](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/alt-text.md#rule-options)
|
|
42
|
+
* - [jsx-a11y/img-redundant-alt: `components` option](https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/img-redundant-alt.md#rule-options)
|
|
43
|
+
*
|
|
44
|
+
* @default ['Img', 'LazyImg', 'Image', 'LazyImage', 'NextImage', 'LazyNextImage']
|
|
45
|
+
*/
|
|
46
|
+
imageComponents?: RuleOptions<'jsx-a11y/img-redundant-alt'>['components'];
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
export type { ReactOptions };
|
|
@@ -97,7 +97,7 @@ interface StylisticOptions extends ConfigWithOverrides<ConfigRules> {
|
|
|
97
97
|
*
|
|
98
98
|
* @default 'always'
|
|
99
99
|
*/
|
|
100
|
-
|
|
100
|
+
selfCloseVoidHtmlElements?: 'never' | 'always';
|
|
101
101
|
/**
|
|
102
102
|
* Add semicolons at the end of statements.
|
|
103
103
|
*
|
|
@@ -44,7 +44,7 @@ interface TestOptions {
|
|
|
44
44
|
*/
|
|
45
45
|
storybook?: boolean | ConfigWithOverrides<StorybookConfigRules>;
|
|
46
46
|
/**
|
|
47
|
-
* Use [eslint-plugin
|
|
47
|
+
* Use [@vitest/eslint-plugin](https://github.com/vitest-dev/eslint-plugin-vitest) to enforce best practices and code styles for Vitest tests.
|
|
48
48
|
*
|
|
49
49
|
* @default false // `true` if "vitest" is detected in the dependencies when `autoDetectDeps` is enabled
|
|
50
50
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shayanthenerd/eslint-config",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.26.1",
|
|
4
4
|
"description": "A modern, flexible ESLint configuration for enforcing best practices and maintaining a consistent coding style",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -52,41 +52,46 @@
|
|
|
52
52
|
"{**/*.ts,package.json}": "pnpm lint"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
+
"@eslint-react/eslint-plugin": "5.9.2",
|
|
55
56
|
"@eslint/css": "1.3.0",
|
|
56
57
|
"@eslint/markdown": "8.0.2",
|
|
57
58
|
"@html-eslint/eslint-plugin": "0.62.0",
|
|
59
|
+
"@html-eslint/eslint-plugin-react": "0.62.0",
|
|
60
|
+
"@next/eslint-plugin-next": "16.2.9",
|
|
58
61
|
"@stylistic/eslint-plugin": "5.10.0",
|
|
59
62
|
"@vitest/eslint-plugin": "1.6.20",
|
|
60
|
-
"astro-eslint-parser": "
|
|
63
|
+
"astro-eslint-parser": "2.0.0",
|
|
61
64
|
"defu": "6.1.7",
|
|
62
65
|
"eslint-flat-config-utils": "3.2.0",
|
|
63
66
|
"eslint-import-resolver-typescript": "4.4.5",
|
|
64
|
-
"eslint-plugin-astro": "1.
|
|
67
|
+
"eslint-plugin-astro": "2.1.0",
|
|
68
|
+
"eslint-plugin-baseline-js": "0.6.2",
|
|
65
69
|
"eslint-plugin-better-tailwindcss": "4.6.0",
|
|
66
70
|
"eslint-plugin-cypress": "6.4.1",
|
|
67
|
-
"eslint-plugin-import-x": "4.
|
|
71
|
+
"eslint-plugin-import-x": "4.17.0",
|
|
68
72
|
"eslint-plugin-jsx-a11y": "6.10.2",
|
|
69
73
|
"eslint-plugin-n": "18.1.0",
|
|
70
|
-
"eslint-plugin-package-json": "1.
|
|
71
|
-
"eslint-plugin-perfectionist": "5.9.
|
|
74
|
+
"eslint-plugin-package-json": "1.5.0",
|
|
75
|
+
"eslint-plugin-perfectionist": "5.9.1",
|
|
72
76
|
"eslint-plugin-playwright": "2.10.4",
|
|
73
77
|
"eslint-plugin-promise": "7.3.0",
|
|
74
|
-
"eslint-plugin-storybook": "10.4.
|
|
75
|
-
"eslint-plugin-unicorn": "
|
|
78
|
+
"eslint-plugin-storybook": "10.4.6",
|
|
79
|
+
"eslint-plugin-unicorn": "68.0.0",
|
|
76
80
|
"eslint-plugin-vue": "10.9.2",
|
|
77
81
|
"eslint-plugin-vuejs-accessibility": "2.5.0",
|
|
78
82
|
"eslint-plugin-zod": "4.7.0",
|
|
79
83
|
"eslint-plugin-zod-mini": "1.4.0",
|
|
80
|
-
"globals": "17.
|
|
84
|
+
"globals": "17.7.0",
|
|
81
85
|
"local-pkg": "1.2.1",
|
|
82
86
|
"tailwind-csstree": "0.3.3",
|
|
83
|
-
"typescript-eslint": "8.
|
|
87
|
+
"typescript-eslint": "8.62.0"
|
|
84
88
|
},
|
|
85
89
|
"devDependencies": {
|
|
86
|
-
"@arethetypeswrong/cli": "0.18.
|
|
90
|
+
"@arethetypeswrong/cli": "0.18.4",
|
|
87
91
|
"@eslint/config-inspector": "3.0.4",
|
|
88
|
-
"@types/
|
|
89
|
-
"
|
|
92
|
+
"@types/eslint-plugin-jsx-a11y": "6.10.1",
|
|
93
|
+
"@types/node": "26.0.0",
|
|
94
|
+
"actions-up": "1.14.3",
|
|
90
95
|
"eslint": "10.5.0",
|
|
91
96
|
"eslint-typegen": "2.3.1",
|
|
92
97
|
"nano-staged": "1.0.2",
|
|
@@ -95,7 +100,7 @@
|
|
|
95
100
|
"serve": "14.2.6",
|
|
96
101
|
"simple-git-hooks": "2.13.1",
|
|
97
102
|
"ts-morph": "28.0.0",
|
|
98
|
-
"tsdown": "0.22.
|
|
103
|
+
"tsdown": "0.22.3",
|
|
99
104
|
"typescript": "6.0.3",
|
|
100
105
|
"unplugin-unused": "0.5.7"
|
|
101
106
|
},
|
|
@@ -108,12 +113,12 @@
|
|
|
108
113
|
"devEngines": {
|
|
109
114
|
"runtime": {
|
|
110
115
|
"name": "node",
|
|
111
|
-
"version": "^22.22.
|
|
116
|
+
"version": "^22.22.3 || ^24.15.0 || ^26.0.0",
|
|
112
117
|
"onFail": "warn"
|
|
113
118
|
},
|
|
114
119
|
"packageManager": {
|
|
115
120
|
"name": "pnpm",
|
|
116
|
-
"version": "11.
|
|
121
|
+
"version": "11.8.0",
|
|
117
122
|
"onFail": "warn"
|
|
118
123
|
}
|
|
119
124
|
},
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { PluginRules, RuleOptions } from "../eslintRules.mjs";
|
|
2
|
-
import { ConfigWithOverrides } from "../index.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/types/options/css.d.ts
|
|
5
|
-
type ConfigRules = PluginRules<'css'>;
|
|
6
|
-
interface CSSOptions extends ConfigWithOverrides<ConfigRules> {
|
|
7
|
-
/**
|
|
8
|
-
* An array of relative font units that are allowed to be used.
|
|
9
|
-
*
|
|
10
|
-
* @default ['rem', 'em']
|
|
11
|
-
*
|
|
12
|
-
* @see [css/relative-font-units: `allowUnits` option](https://github.com/eslint/css/blob/main/docs/rules/relative-font-units.md#options)
|
|
13
|
-
*/
|
|
14
|
-
allowedRelativeFontUnits?: RuleOptions<'css/relative-font-units'>['allowUnits'];
|
|
15
|
-
/**
|
|
16
|
-
* Enforce the use of baseline features.
|
|
17
|
-
*
|
|
18
|
-
* Aside from `'widely'` and `'newly'`, it can also be set to a numeric baseline year, such as `2025`, to allow features that became baseline newly available that year or earlier.
|
|
19
|
-
*
|
|
20
|
-
* @default false
|
|
21
|
-
*
|
|
22
|
-
* @see [css/use-baseline](https://github.com/eslint/css/blob/main/docs/rules/use-baseline.md)
|
|
23
|
-
*/
|
|
24
|
-
useBaseline?: false | RuleOptions<'css/use-baseline'>['available'];
|
|
25
|
-
}
|
|
26
|
-
//#endregion
|
|
27
|
-
export type { CSSOptions };
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { PluginRules, RuleOptions } from "../eslintRules.mjs";
|
|
2
|
-
import { ConfigWithOverrides } from "../index.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/types/options/html.d.ts
|
|
5
|
-
type ConfigRules = PluginRules<'@html-eslint'>;
|
|
6
|
-
interface HTMLOptions extends ConfigWithOverrides<ConfigRules> {
|
|
7
|
-
/**
|
|
8
|
-
* Enforce consistent naming convention for `id` attribute values.
|
|
9
|
-
*
|
|
10
|
-
* @default 'snake_case'
|
|
11
|
-
*
|
|
12
|
-
* @see [@html-eslint/id-naming-convention](https://html-eslint.org/docs/rules/id-naming-convention)
|
|
13
|
-
*/
|
|
14
|
-
idNamingConvention?: Exclude<RuleOptions<'@html-eslint/id-naming-convention'>, 'regex'>;
|
|
15
|
-
/**
|
|
16
|
-
* Enforce the use of baseline features.
|
|
17
|
-
*
|
|
18
|
-
* Aside from `'widely'` and `'newly'`, it can also be set to a numeric baseline year, such as `2025` (minimum is `2000`), to allow features that became baseline newly available that year or earlier.
|
|
19
|
-
*
|
|
20
|
-
* @default false
|
|
21
|
-
*
|
|
22
|
-
* @see [@html-eslint/use-baseline](https://html-eslint.org/docs/rules/use-baseline)
|
|
23
|
-
*/
|
|
24
|
-
useBaseline?: false | RuleOptions<'@html-eslint/use-baseline'>['available'];
|
|
25
|
-
}
|
|
26
|
-
//#endregion
|
|
27
|
-
export type { HTMLOptions };
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { PluginRules, RuleOptions } from "../eslintRules.mjs";
|
|
2
|
-
import { ConfigWithOverrides } from "../index.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/types/options/perfectionist.d.ts
|
|
5
|
-
type SortTypeOptions = RuleOptions<'perfectionist/sort-imports'>['type'];
|
|
6
|
-
type ConfigRules = PluginRules<'perfectionist'>;
|
|
7
|
-
interface PerfectionistOptions extends ConfigWithOverrides<ConfigRules> {
|
|
8
|
-
/**
|
|
9
|
-
* The type of sorting.
|
|
10
|
-
*
|
|
11
|
-
* @default 'line-length'
|
|
12
|
-
*
|
|
13
|
-
* @see [Perfectionist Settings: `type` option](https://perfectionist.dev/guide/getting-started#settings)
|
|
14
|
-
*/
|
|
15
|
-
sortType?: Exclude<SortTypeOptions, 'type-import-first'>;
|
|
16
|
-
}
|
|
17
|
-
//#endregion
|
|
18
|
-
export type { PerfectionistOptions };
|