@eslint-sets/eslint-config 6.2.0-beta.4 → 6.2.0-beta.6

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 CHANGED
@@ -234,13 +234,15 @@ export default eslintConfig({
234
234
 
235
235
  // Or with custom options:
236
236
  stylistic: {
237
- arrowParens: 'always', // 'always' | 'avoid'
238
- bracketSpacing: true, // boolean
239
- indent: 2, // 'tab' | number
240
- jsxQuotes: 'prefer-double', // 'prefer-double' | 'prefer-single'
241
- quotes: 'single', // 'single' | 'double'
242
- semi: false, // boolean
243
- trailingComma: 'always-multiline', // 'none' | 'es5' | 'always-multiline' | 'all'
237
+ arrowParens: false, // true (always) | false (avoid) - default: false
238
+ braceStyle: 'stroustrup', // '1tbs' | 'stroustrup' | 'allman' - default: 'stroustrup'
239
+ bracketSpacing: true, // boolean - default: true
240
+ indent: 2, // 'tab' | number - default: 2
241
+ jsxQuotes: 'prefer-double', // 'prefer-double' | 'prefer-single' - default: 'prefer-double'
242
+ quoteProps: 'as-needed', // 'always' | 'as-needed' | 'consistent' | 'consistent-as-needed' - default: 'as-needed'
243
+ quotes: 'single', // 'single' | 'double' - default: 'single'
244
+ semi: false, // boolean - default: false
245
+ trailingComma: 'always-multiline', // 'none' | 'always' | 'never' | 'only-multiline' | 'always-multiline' - default: 'always-multiline'
244
246
  },
245
247
 
246
248
  // Svelte support (default: 'auto' - auto-detect)
@@ -304,13 +306,15 @@ export default eslintConfig({
304
306
  // Use Stylistic with custom options
305
307
  export default eslintConfig({
306
308
  stylistic: {
307
- arrowParens: 'always', // 'always' | 'avoid'
309
+ arrowParens: false, // true (always) | false (avoid)
310
+ braceStyle: 'stroustrup', // '1tbs' | 'stroustrup' | 'allman'
308
311
  bracketSpacing: true, // boolean
309
312
  indent: 2, // 'tab' | number
310
313
  jsxQuotes: 'prefer-double', // 'prefer-double' | 'prefer-single'
314
+ quoteProps: 'as-needed', // 'always' | 'as-needed' | 'consistent' | 'consistent-as-needed'
311
315
  quotes: 'single', // 'single' | 'double'
312
316
  semi: false, // boolean
313
- trailingComma: 'always-multiline', // 'none' | 'es5' | 'always-multiline' | 'all'
317
+ trailingComma: 'always-multiline', // 'none' | 'always' | 'never' | 'only-multiline' | 'always-multiline'
314
318
  },
315
319
  })
316
320
 
@@ -323,7 +327,7 @@ export default eslintConfig({
323
327
  // Use Prettier with custom options
324
328
  export default eslintConfig({
325
329
  prettier: {
326
- printWidth: 240,
330
+ printWidth: 180,
327
331
  semi: false,
328
332
  singleQuote: true,
329
333
  tabWidth: 2,
@@ -351,7 +355,7 @@ You can override these defaults in your config:
351
355
  export default eslintConfig({
352
356
  rules: {
353
357
  // Add line length limit if needed
354
- '@stylistic/max-len': ['error', { code: 120 }],
358
+ '@stylistic/max-len': ['error', { code: 180 }],
355
359
 
356
360
  // Prefer imports over globals
357
361
  'n/prefer-global/buffer': ['error', 'never'],
@@ -394,6 +398,48 @@ export default eslintConfig({
394
398
  })
395
399
  ```
396
400
 
401
+ ### TypeScript Advanced Options
402
+
403
+ ```typescript
404
+ // Type-aware rules (requires tsconfig.json)
405
+ export default eslintConfig({
406
+ typescript: {
407
+ typeAware: true,
408
+ tsconfigPath: './tsconfig.json',
409
+ overridesTypeAware: {
410
+ 'ts/no-floating-promises': 'warn',
411
+ },
412
+ },
413
+ })
414
+
415
+ // Library project with explicit return types
416
+ export default eslintConfig({
417
+ type: 'lib', // Enables ts/explicit-function-return-type
418
+ typescript: true,
419
+ })
420
+
421
+ // Erasable syntax only (for libraries that want type-only constructs)
422
+ export default eslintConfig({
423
+ typescript: {
424
+ erasableOnly: true, // Requires eslint-plugin-erasable-syntax-only
425
+ },
426
+ })
427
+ ```
428
+
429
+ ### Disabling Stylistic Rules per Config
430
+
431
+ You can disable stylistic rules for specific configs:
432
+
433
+ ```typescript
434
+ // Disable stylistic rules for JSON files
435
+ export default eslintConfig({
436
+ jsonc: { stylistic: false },
437
+ yaml: { stylistic: false },
438
+ toml: { stylistic: false },
439
+ vue: { stylistic: false },
440
+ })
441
+ ```
442
+
397
443
  ### Framework-Specific Configurations
398
444
 
399
445
  #### Vue Project
@@ -44,6 +44,8 @@ export * from '../plugins';
44
44
  export type { FrameworkOptions, Linter, Options, OptionsOverrides, ProjectType } from '../types';
45
45
  export * from '../utils';
46
46
  export type { ReactOptions } from './react';
47
+ export type { TomlOptions } from './toml';
47
48
  export type { TypeScriptOptions } from './typescript';
48
49
  export type { VueOptions } from './vue';
50
+ export type { YamlOptions } from './yaml';
49
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configs/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configs/index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import type { Linter } from 'eslint';
2
- import type { OptionsOverrides } from '../types';
2
+ import type { OptionsOverrides, OptionsStylistic } from '../types';
3
3
  /**
4
4
  * JSON/JSONC configuration options
5
5
  */
6
- export type JsoncOptions = OptionsOverrides;
6
+ export type JsoncOptions = OptionsOverrides & OptionsStylistic;
7
7
  /**
8
8
  * JSON/JSONC/JSON5 configuration
9
9
  */
@@ -1 +1 @@
1
- {"version":3,"file":"jsonc.d.ts","sourceRoot":"","sources":["../../src/configs/jsonc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAKhD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAA;AAE3C;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,CA6CjE"}
1
+ {"version":3,"file":"jsonc.d.ts","sourceRoot":"","sources":["../../src/configs/jsonc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAKlE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,CAAA;AAE9D;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,CAqEjE"}
@@ -7,7 +7,7 @@ import type { Linter } from 'eslint';
7
7
  export interface PrettierOptions {
8
8
  /**
9
9
  * Arrow function parentheses
10
- * @default 'always'
10
+ * @default 'avoid'
11
11
  */
12
12
  arrowParens?: 'always' | 'avoid';
13
13
  /**
@@ -31,7 +31,7 @@ export interface PrettierOptions {
31
31
  overrides?: Linter.RulesRecord;
32
32
  /**
33
33
  * Print width
34
- * @default 120
34
+ * @default 180
35
35
  */
36
36
  printWidth?: number;
37
37
  /**
@@ -5,12 +5,12 @@ import type { Linter } from 'eslint';
5
5
  export interface StylisticOptions {
6
6
  /**
7
7
  * Arrow function parentheses
8
- * @default true
8
+ * @default false
9
9
  */
10
10
  arrowParens?: boolean;
11
11
  /**
12
12
  * Brace style
13
- * @default '1tbs'
13
+ * @default 'stroustrup'
14
14
  */
15
15
  braceStyle?: '1tbs' | 'stroustrup' | 'allman';
16
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"stylistic.d.ts","sourceRoot":"","sources":["../../src/configs/stylistic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAIpC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAA;IAE7C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAEvB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IAEb;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,eAAe,CAAA;IAE7C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;IAE9B;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,sBAAsB,CAAA;IAE3E;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAE5B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;OAGG;IACH,aAAa,CAAC,EAAE,kBAAkB,GAAG,QAAQ,GAAG,OAAO,GAAG,gBAAgB,CAAA;CAC1E;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAWrC,CAAA;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,CAsHzE"}
1
+ {"version":3,"file":"stylistic.d.ts","sourceRoot":"","sources":["../../src/configs/stylistic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAIpC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAA;IAE7C;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAEvB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAA;IAEb;;;OAGG;IACH,SAAS,CAAC,EAAE,eAAe,GAAG,eAAe,CAAA;IAE7C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;IAE9B;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,sBAAsB,CAAA;IAE3E;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAE5B;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;OAGG;IACH,aAAa,CAAC,EAAE,kBAAkB,GAAG,QAAQ,GAAG,OAAO,GAAG,gBAAgB,CAAA;CAC1E;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAWrC,CAAA;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,CA0IzE"}
@@ -1,6 +1,27 @@
1
1
  import type { Linter } from 'eslint';
2
+ import type { OptionsOverrides } from '../types';
3
+ /**
4
+ * Stylistic options for TOML config
5
+ */
6
+ export interface TomlStylisticOptions {
7
+ /**
8
+ * Indentation style
9
+ * @default 2
10
+ */
11
+ indent?: number | 'tab';
12
+ }
13
+ /**
14
+ * TOML configuration options
15
+ */
16
+ export interface TomlOptions extends OptionsOverrides {
17
+ /**
18
+ * Enable stylistic rules
19
+ * @default true
20
+ */
21
+ stylistic?: boolean | TomlStylisticOptions;
22
+ }
2
23
  /**
3
24
  * TOML configuration
4
25
  */
5
- export declare function toml(): Linter.Config[];
26
+ export declare function toml(options?: TomlOptions): Linter.Config[];
6
27
  //# sourceMappingURL=toml.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toml.d.ts","sourceRoot":"","sources":["../../src/configs/toml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AASpC;;GAEG;AACH,wBAAgB,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAuBtC"}
1
+ {"version":3,"file":"toml.d.ts","sourceRoot":"","sources":["../../src/configs/toml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAShD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACpD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAA;CAC1C;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,CAoD/D"}
@@ -1,23 +1,9 @@
1
1
  import type { Linter } from 'eslint';
2
- import type { OptionsOverrides } from '../types';
2
+ import type { OptionsOverrides, OptionsProjectType, OptionsTypeScriptErasableOnly, OptionsTypeScriptParserOptions, OptionsTypeScriptWithTypes } from '../types';
3
3
  /**
4
4
  * TypeScript configuration options
5
5
  */
6
- export interface TypeScriptOptions extends OptionsOverrides {
7
- /**
8
- * Glob patterns for files that should be type aware
9
- * @default ['**\/*.{ts,tsx}']
10
- */
11
- filesTypeAware?: string[];
12
- /**
13
- * Glob patterns for files that should not be type aware
14
- */
15
- ignoresTypeAware?: string[];
16
- /**
17
- * Path to tsconfig.json
18
- * @default './tsconfig.json'
19
- */
20
- tsconfigPath?: string | string[];
6
+ export interface TypeScriptOptions extends OptionsOverrides, OptionsTypeScriptWithTypes, OptionsTypeScriptParserOptions, OptionsProjectType, OptionsTypeScriptErasableOnly {
21
7
  /**
22
8
  * Enable rules that require type information
23
9
  * @default false
@@ -1 +1 @@
1
- {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAMhD;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IAC1D;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAKD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAuJ1F"}
1
+ {"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/configs/typescript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,UAAU,CAAA;AAO/J;;GAEG;AACH,MAAM,WAAW,iBAChB,SAAQ,gBAAgB,EACvB,0BAA0B,EAC1B,8BAA8B,EAC9B,kBAAkB,EAClB,6BAA6B;IAC9B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACnB;AAKD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAwM1F"}
@@ -1,9 +1,9 @@
1
1
  import type { Linter } from 'eslint';
2
- import type { OptionsOverrides } from '../types';
2
+ import type { OptionsOverrides, OptionsStylistic } from '../types';
3
3
  /**
4
4
  * Vue configuration options
5
5
  */
6
- export interface VueOptions extends OptionsOverrides {
6
+ export interface VueOptions extends OptionsOverrides, OptionsStylistic {
7
7
  /**
8
8
  * Enable Vue accessibility rules
9
9
  * Requires eslint-plugin-vuejs-accessibility
@@ -1 +1 @@
1
- {"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../src/configs/vue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAMhD;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IACnD;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CAClB;AAOD;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAyF5E"}
1
+ {"version":3,"file":"vue.d.ts","sourceRoot":"","sources":["../../src/configs/vue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAMlE;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,gBAAgB,EAAE,gBAAgB;IACrE;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;CAClB;AAOD;;GAEG;AACH,wBAAsB,GAAG,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CA2I5E"}
@@ -1,9 +1,30 @@
1
1
  import type { Linter } from 'eslint';
2
2
  import type { OptionsOverrides } from '../types';
3
+ /**
4
+ * Stylistic options for YAML config
5
+ */
6
+ export interface YamlStylisticOptions {
7
+ /**
8
+ * Indentation style
9
+ * @default 2
10
+ */
11
+ indent?: number | 'tab';
12
+ /**
13
+ * Quote style
14
+ * @default 'single'
15
+ */
16
+ quotes?: 'single' | 'double';
17
+ }
3
18
  /**
4
19
  * YAML configuration options
5
20
  */
6
- export type YamlOptions = OptionsOverrides;
21
+ export interface YamlOptions extends OptionsOverrides {
22
+ /**
23
+ * Enable stylistic rules
24
+ * @default true
25
+ */
26
+ stylistic?: boolean | YamlStylisticOptions;
27
+ }
7
28
  /**
8
29
  * YAML configuration
9
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/configs/yaml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAKhD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAA;AAK1C;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,CAwC/D"}
1
+ {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/configs/yaml.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAKhD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAEvB;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACpD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,oBAAoB,CAAA;CAC1C;AAKD;;GAEG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,CAiE/D"}
package/dist/index.d.ts CHANGED
@@ -21,8 +21,10 @@ export { config } from './configs';
21
21
  export type { PrettierOptions } from './configs/prettier';
22
22
  export type { ReactOptions } from './configs/react';
23
23
  export type { StylisticOptions } from './configs/stylistic';
24
+ export type { TomlOptions } from './configs/toml';
24
25
  export type { TypeScriptOptions } from './configs/typescript';
25
26
  export type { VueOptions } from './configs/vue';
27
+ export type { YamlOptions } from './configs/yaml';
26
28
  export * from './constants';
27
29
  export * from './plugins';
28
30
  export type { ConfigNames, FrameworkOptions, Linter, Options, OptionsOverrides, PerfectionistOptions, ProjectType, Rules, TypedFlatConfigItem } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAEhF;AAGD,cAAc,WAAW,CAAA;AAGzB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE7D,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,cAAc,aAAa,CAAA;AAE3B,cAAc,WAAW,CAAA;AAEzB,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE9J,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAEhF;AAGD,cAAc,WAAW,CAAA;AAGzB,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEzD,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAE3D,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE7D,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAEjD,cAAc,aAAa,CAAA;AAE3B,cAAc,WAAW,CAAA;AAEzB,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAE9J,cAAc,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -936,22 +936,30 @@ function javascript(options = {}) {
936
936
  import jsoncPlugin from "eslint-plugin-jsonc";
937
937
  import jsoncParser from "jsonc-eslint-parser";
938
938
  function jsonc(options = {}) {
939
- const { overrides = {} } = options;
939
+ const {
940
+ overrides = {},
941
+ stylistic: stylistic2 = true
942
+ } = options;
943
+ const {
944
+ indent = 2
945
+ } = typeof stylistic2 === "boolean" ? {} : stylistic2;
940
946
  return [
941
947
  {
942
948
  files: [GLOB_JSON, GLOB_JSON5, GLOB_JSONC],
943
949
  languageOptions: {
944
950
  parser: jsoncParser
945
951
  },
946
- name: "eslint-sets/jsonc/setup",
952
+ name: "eslint-sets/jsonc",
947
953
  plugins: {
948
954
  jsonc: jsoncPlugin
949
955
  },
950
956
  rules: {
951
- // Use only valid rules from the plugin
957
+ // JSON core rules (always enabled)
952
958
  "jsonc/no-bigint-literals": "error",
953
959
  "jsonc/no-binary-expression": "error",
954
960
  "jsonc/no-binary-numeric-literals": "error",
961
+ "jsonc/no-dupe-keys": "error",
962
+ "jsonc/no-escape-sequence-in-identifier": "error",
955
963
  "jsonc/no-floating-decimal": "error",
956
964
  "jsonc/no-hexadecimal-numeric-literals": "error",
957
965
  "jsonc/no-infinity": "error",
@@ -965,14 +973,26 @@ function jsonc(options = {}) {
965
973
  "jsonc/no-parenthesized": "error",
966
974
  "jsonc/no-plus-sign": "error",
967
975
  "jsonc/no-regexp-literals": "error",
976
+ "jsonc/no-sparse-arrays": "error",
968
977
  "jsonc/no-template-literals": "error",
969
978
  "jsonc/no-undefined-value": "error",
970
979
  "jsonc/no-unicode-codepoint-escapes": "error",
971
980
  "jsonc/no-useless-escape": "error",
972
- "jsonc/sort-array-values": "off",
973
- "jsonc/sort-keys": "off",
974
981
  "jsonc/space-unary-ops": "error",
975
982
  "jsonc/valid-json-number": "error",
983
+ // Stylistic rules (conditional)
984
+ ...stylistic2 ? {
985
+ "jsonc/array-bracket-spacing": ["error", "never"],
986
+ "jsonc/comma-dangle": ["error", "never"],
987
+ "jsonc/comma-style": ["error", "last"],
988
+ "jsonc/indent": ["error", indent === "tab" ? "tab" : indent],
989
+ "jsonc/key-spacing": ["error", { afterColon: true, beforeColon: false }],
990
+ "jsonc/object-curly-newline": ["error", { consistent: true, multiline: true }],
991
+ "jsonc/object-curly-spacing": ["error", "always"],
992
+ "jsonc/object-property-newline": ["error", { allowAllPropertiesOnSameLine: true }],
993
+ "jsonc/quote-props": "error",
994
+ "jsonc/quotes": "error"
995
+ } : {},
976
996
  // User overrides
977
997
  ...overrides
978
998
  }
@@ -1344,12 +1364,12 @@ import eslintConfigPrettier from "eslint-config-prettier";
1344
1364
  import eslintPluginPrettier from "eslint-plugin-prettier";
1345
1365
  function prettier(options = {}) {
1346
1366
  const {
1347
- arrowParens = "always",
1367
+ arrowParens = "avoid",
1348
1368
  bracketSpacing = true,
1349
1369
  endOfLine = "auto",
1350
1370
  jsxSingleQuote = false,
1351
1371
  overrides = {},
1352
- printWidth = 240,
1372
+ printWidth = 180,
1353
1373
  quoteProps = "as-needed",
1354
1374
  semi = false,
1355
1375
  singleQuote = true,
@@ -1732,8 +1752,8 @@ async function sortTsconfig(options = {}) {
1732
1752
  // src/configs/stylistic.ts
1733
1753
  import stylisticPlugin from "@stylistic/eslint-plugin";
1734
1754
  var StylisticConfigDefaults = {
1735
- arrowParens: true,
1736
- braceStyle: "1tbs",
1755
+ arrowParens: false,
1756
+ braceStyle: "stroustrup",
1737
1757
  bracketSpacing: true,
1738
1758
  indent: 2,
1739
1759
  jsx: true,
@@ -1792,8 +1812,28 @@ function stylistic(options = {}) {
1792
1812
  "error",
1793
1813
  indentStyle,
1794
1814
  {
1815
+ // Don't ignore TSUnionType/TSIntersectionType to match Prettier behavior
1795
1816
  ignoredNodes: ["TemplateLiteral"],
1796
- SwitchCase: 1
1817
+ SwitchCase: 1,
1818
+ // Match Prettier's behavior for multi-line expressions
1819
+ offsetTernaryExpressions: true,
1820
+ // Handle various expression types
1821
+ ArrayExpression: 1,
1822
+ CallExpression: { arguments: 1 },
1823
+ FunctionDeclaration: {
1824
+ body: 1,
1825
+ parameters: 1,
1826
+ returnType: 1
1827
+ },
1828
+ FunctionExpression: {
1829
+ body: 1,
1830
+ parameters: 1,
1831
+ returnType: 1
1832
+ },
1833
+ ImportDeclaration: 1,
1834
+ MemberExpression: 1,
1835
+ ObjectExpression: 1,
1836
+ VariableDeclarator: 1
1797
1837
  }
1798
1838
  ],
1799
1839
  "@stylistic/jsx-curly-brace-presence": ["error", { children: "never", props: "never" }],
@@ -2001,7 +2041,14 @@ function test(options = {}) {
2001
2041
  import tomlPlugin from "eslint-plugin-toml";
2002
2042
  import * as tomlParser from "toml-eslint-parser";
2003
2043
  var GLOB_TOML = "**/*.toml";
2004
- function toml() {
2044
+ function toml(options = {}) {
2045
+ const {
2046
+ overrides = {},
2047
+ stylistic: stylistic2 = true
2048
+ } = options;
2049
+ const {
2050
+ indent = 2
2051
+ } = typeof stylistic2 === "boolean" ? {} : stylistic2;
2005
2052
  return [
2006
2053
  {
2007
2054
  files: [GLOB_TOML],
@@ -2013,57 +2060,81 @@ function toml() {
2013
2060
  toml: tomlPlugin
2014
2061
  },
2015
2062
  rules: {
2016
- // TOML specific rules
2017
- "toml/comma-style": ["error", "last"],
2018
- "toml/indent": ["error", "tab"],
2019
- "toml/keys-order": "off",
2063
+ // TOML core rules (always enabled)
2064
+ "toml/comma-style": "error",
2065
+ "toml/keys-order": "error",
2020
2066
  "toml/no-space-dots": "error",
2021
2067
  "toml/no-unreadable-number-separator": "error",
2022
- "toml/precision-of-fractional-seconds": "off",
2023
- "toml/tables-order": "off"
2068
+ "toml/precision-of-fractional-seconds": "error",
2069
+ "toml/precision-of-integer": "error",
2070
+ "toml/tables-order": "error",
2071
+ // Stylistic rules (conditional)
2072
+ ...stylistic2 ? {
2073
+ "toml/array-bracket-newline": "error",
2074
+ "toml/array-bracket-spacing": "error",
2075
+ "toml/array-element-newline": "error",
2076
+ "toml/indent": ["error", indent === "tab" ? "tab" : indent],
2077
+ "toml/inline-table-curly-spacing": "error",
2078
+ "toml/key-spacing": "error",
2079
+ "toml/padding-line-between-pairs": "error",
2080
+ "toml/padding-line-between-tables": "error",
2081
+ "toml/quoted-keys": "error",
2082
+ "toml/spaced-comment": "error",
2083
+ "toml/table-bracket-spacing": "error"
2084
+ } : {},
2085
+ // User overrides
2086
+ ...overrides
2024
2087
  }
2025
2088
  }
2026
2089
  ];
2027
2090
  }
2028
2091
 
2029
2092
  // src/configs/typescript.ts
2093
+ import process2 from "node:process";
2030
2094
  import tsParser from "@typescript-eslint/parser";
2031
2095
  async function typescript(options = {}) {
2032
2096
  const {
2033
2097
  filesTypeAware = [GLOB_TS],
2034
2098
  ignoresTypeAware = ["**/*.md/**", "**/*.astro/*.ts"],
2035
2099
  overrides = {},
2036
- tsconfigPath = "./tsconfig.json",
2037
- typeAware = false
2100
+ overridesTypeAware = {},
2101
+ parserOptions = {},
2102
+ tsconfigPath,
2103
+ type = "app",
2104
+ typeAware = false,
2105
+ erasableOnly = false
2038
2106
  } = options;
2039
2107
  const tseslint = await loadPlugin("@typescript-eslint/eslint-plugin");
2040
2108
  if (!tseslint) {
2041
2109
  return [];
2042
2110
  }
2043
- const isTypeAware = typeAware && tsconfigPath;
2044
- const tsconfigPaths = Array.isArray(tsconfigPath) ? tsconfigPath : [tsconfigPath];
2111
+ const isTypeAware = typeAware && !!tsconfigPath;
2045
2112
  const recommendedRules = tseslint.configs.recommended.rules;
2046
2113
  const strictRules = tseslint.configs.strict?.rules || {};
2047
2114
  const tsRecommendedRules = renameRules(recommendedRules, "ts");
2048
2115
  const tsStrictRules = renameRules(strictRules, "ts");
2049
2116
  const typeAwareRules = {
2050
2117
  // Turn off base rules
2118
+ "dot-notation": "off",
2051
2119
  "no-implied-eval": "off",
2052
- "no-throw-literal": "off",
2053
2120
  "ts/await-thenable": "error",
2121
+ "ts/dot-notation": ["error", { allowKeywords: true }],
2054
2122
  "ts/no-floating-promises": "error",
2055
2123
  "ts/no-for-in-array": "error",
2056
2124
  "ts/no-implied-eval": "error",
2057
2125
  "ts/no-misused-promises": "error",
2058
- "ts/no-throw-literal": "error",
2059
2126
  "ts/no-unnecessary-type-assertion": "error",
2060
2127
  "ts/no-unsafe-argument": "error",
2061
2128
  "ts/no-unsafe-assignment": "error",
2062
2129
  "ts/no-unsafe-call": "error",
2063
2130
  "ts/no-unsafe-member-access": "error",
2064
2131
  "ts/no-unsafe-return": "error",
2132
+ "ts/promise-function-async": "error",
2065
2133
  "ts/restrict-plus-operands": "error",
2066
2134
  "ts/restrict-template-expressions": "error",
2135
+ "ts/return-await": ["error", "in-try-catch"],
2136
+ "ts/strict-boolean-expressions": ["error", { allowNullableBoolean: true, allowNullableObject: true }],
2137
+ "ts/switch-exhaustiveness-check": "error",
2067
2138
  "ts/unbound-method": "error"
2068
2139
  };
2069
2140
  const configs = [
@@ -2075,8 +2146,13 @@ async function typescript(options = {}) {
2075
2146
  ecmaVersion: "latest",
2076
2147
  sourceType: "module",
2077
2148
  ...isTypeAware ? {
2078
- project: tsconfigPaths
2079
- } : {}
2149
+ projectService: {
2150
+ allowDefaultProject: ["./*.js"],
2151
+ defaultProject: tsconfigPath
2152
+ },
2153
+ tsconfigRootDir: process2.cwd()
2154
+ } : {},
2155
+ ...parserOptions
2080
2156
  }
2081
2157
  },
2082
2158
  name: "eslint-sets/typescript",
@@ -2089,22 +2165,25 @@ async function typescript(options = {}) {
2089
2165
  ...tsStrictRules,
2090
2166
  // Override JavaScript rules
2091
2167
  "no-dupe-class-members": "off",
2092
- "no-loss-of-precision": "off",
2093
2168
  "no-redeclare": "off",
2094
2169
  "no-use-before-define": "off",
2095
2170
  "no-useless-constructor": "off",
2096
2171
  // Essential custom rules
2097
- "ts/ban-ts-comment": ["error", { "ts-ignore": "allow-with-description" }],
2172
+ "ts/ban-ts-comment": ["error", { "ts-expect-error": "allow-with-description" }],
2098
2173
  "ts/consistent-type-definitions": ["error", "interface"],
2099
- "ts/consistent-type-imports": ["error", { disallowTypeAnnotations: false, prefer: "type-imports" }],
2174
+ "ts/consistent-type-imports": ["error", {
2175
+ disallowTypeAnnotations: false,
2176
+ fixStyle: "separate-type-imports",
2177
+ prefer: "type-imports"
2178
+ }],
2179
+ "ts/method-signature-style": ["error", "property"],
2100
2180
  "ts/no-dynamic-delete": "off",
2101
2181
  "ts/no-explicit-any": "off",
2102
2182
  "ts/no-extraneous-class": "off",
2103
2183
  "ts/no-import-type-side-effects": "error",
2104
2184
  "ts/no-invalid-void-type": "off",
2105
2185
  "ts/no-non-null-assertion": "off",
2106
- // Use TypeScript's no-redeclare rule instead
2107
- "ts/no-redeclare": "error",
2186
+ "ts/no-redeclare": ["error", { builtinGlobals: false }],
2108
2187
  "ts/no-require-imports": "error",
2109
2188
  "ts/no-unused-expressions": ["error", {
2110
2189
  allowShortCircuit: true,
@@ -2114,9 +2193,17 @@ async function typescript(options = {}) {
2114
2193
  "ts/no-unused-vars": "off",
2115
2194
  "ts/no-use-before-define": ["error", { classes: false, functions: false, variables: true }],
2116
2195
  "ts/no-useless-constructor": "off",
2117
- "ts/prefer-ts-expect-error": "error",
2196
+ "ts/no-wrapper-object-types": "error",
2118
2197
  "ts/triple-slash-reference": "off",
2119
2198
  "ts/unified-signatures": "off",
2199
+ // Library-specific rules
2200
+ ...type === "lib" ? {
2201
+ "ts/explicit-function-return-type": ["error", {
2202
+ allowExpressions: true,
2203
+ allowHigherOrderFunctions: true,
2204
+ allowIIFEs: true
2205
+ }]
2206
+ } : {},
2120
2207
  // User overrides
2121
2208
  ...overrides
2122
2209
  }
@@ -2127,9 +2214,29 @@ async function typescript(options = {}) {
2127
2214
  files: filesTypeAware,
2128
2215
  ignores: ignoresTypeAware,
2129
2216
  name: "eslint-sets/typescript/type-aware",
2130
- rules: typeAwareRules
2217
+ rules: {
2218
+ ...typeAwareRules,
2219
+ ...overridesTypeAware
2220
+ }
2131
2221
  });
2132
2222
  }
2223
+ if (erasableOnly) {
2224
+ const erasablePlugin = await interopDefault(import("eslint-plugin-erasable-syntax-only"));
2225
+ if (erasablePlugin) {
2226
+ configs.push({
2227
+ name: "eslint-sets/typescript/erasable-syntax-only",
2228
+ plugins: {
2229
+ "erasable-syntax-only": erasablePlugin
2230
+ },
2231
+ rules: {
2232
+ "erasable-syntax-only/enums": "error",
2233
+ "erasable-syntax-only/import-aliases": "error",
2234
+ "erasable-syntax-only/namespaces": "error",
2235
+ "erasable-syntax-only/parameter-properties": "error"
2236
+ }
2237
+ });
2238
+ }
2239
+ }
2133
2240
  configs.push({
2134
2241
  files: ["**/*.d.ts"],
2135
2242
  name: "eslint-sets/typescript/disables/dts",
@@ -2244,7 +2351,15 @@ async function unocss(options = {}) {
2244
2351
  import vuePlugin from "eslint-plugin-vue";
2245
2352
  import vueParser from "vue-eslint-parser";
2246
2353
  async function vue(options = {}) {
2247
- const { a11y = false, overrides = {}, vueVersion = 3 } = options;
2354
+ const {
2355
+ a11y = false,
2356
+ overrides = {},
2357
+ stylistic: stylistic2 = true,
2358
+ vueVersion = 3
2359
+ } = options;
2360
+ const {
2361
+ indent = 2
2362
+ } = typeof stylistic2 === "boolean" ? {} : stylistic2;
2248
2363
  const vueRecommendedRules = vueVersion === 2 ? {
2249
2364
  ...vuePlugin.configs["flat/vue2-essential"]?.rules || {},
2250
2365
  ...vuePlugin.configs["flat/vue2-strongly-recommended"]?.rules || {},
@@ -2279,13 +2394,54 @@ async function vue(options = {}) {
2279
2394
  // Essential custom rules
2280
2395
  "vue/block-order": ["error", { order: ["script", "template", "style"] }],
2281
2396
  "vue/component-name-in-template-casing": ["error", "PascalCase"],
2282
- "vue/define-macros-order": ["error", { order: ["defineOptions", "defineProps", "defineEmits"] }],
2397
+ "vue/component-options-name-casing": ["error", "PascalCase"],
2398
+ "vue/custom-event-name-casing": ["error", "camelCase"],
2399
+ "vue/define-macros-order": ["error", { order: ["defineOptions", "defineProps", "defineEmits", "defineSlots"] }],
2400
+ "vue/dot-location": ["error", "property"],
2401
+ "vue/dot-notation": ["error", { allowKeywords: true }],
2402
+ "vue/eqeqeq": ["error", "smart"],
2283
2403
  "vue/multi-word-component-names": "off",
2404
+ "vue/no-dupe-keys": "off",
2405
+ "vue/no-empty-pattern": "error",
2406
+ "vue/no-irregular-whitespace": "error",
2407
+ "vue/no-loss-of-precision": "error",
2284
2408
  "vue/no-restricted-v-bind": ["error", "/^v-/"],
2409
+ "vue/no-setup-props-reactivity-loss": "off",
2410
+ "vue/no-sparse-arrays": "error",
2411
+ "vue/no-unused-refs": "error",
2412
+ "vue/no-useless-v-bind": "error",
2285
2413
  "vue/no-v-html": "off",
2286
2414
  "vue/prefer-separate-static-class": "error",
2415
+ "vue/prefer-template": "error",
2416
+ "vue/prop-name-casing": ["error", "camelCase"],
2287
2417
  "vue/require-default-prop": "off",
2288
2418
  "vue/require-prop-types": "off",
2419
+ "vue/space-infix-ops": "error",
2420
+ "vue/space-unary-ops": ["error", { nonwords: false, words: true }],
2421
+ // Stylistic rules (conditional)
2422
+ ...stylistic2 ? {
2423
+ "vue/array-bracket-spacing": ["error", "never"],
2424
+ "vue/arrow-spacing": ["error", { after: true, before: true }],
2425
+ "vue/block-spacing": ["error", "always"],
2426
+ "vue/block-tag-newline": ["error", { multiline: "always", singleline: "always" }],
2427
+ "vue/brace-style": ["error", "stroustrup", { allowSingleLine: true }],
2428
+ "vue/comma-dangle": ["error", "always-multiline"],
2429
+ "vue/comma-spacing": ["error", { after: true, before: false }],
2430
+ "vue/comma-style": ["error", "last"],
2431
+ "vue/html-indent": ["error", indent === "tab" ? "tab" : indent],
2432
+ "vue/html-quotes": ["error", "double"],
2433
+ "vue/key-spacing": ["error", { afterColon: true, beforeColon: false }],
2434
+ "vue/keyword-spacing": ["error", { after: true, before: true }],
2435
+ "vue/max-attributes-per-line": "off",
2436
+ "vue/object-curly-newline": "off",
2437
+ "vue/object-curly-spacing": ["error", "always"],
2438
+ "vue/object-property-newline": ["error", { allowAllPropertiesOnSameLine: true }],
2439
+ "vue/operator-linebreak": ["error", "before"],
2440
+ "vue/padding-line-between-blocks": ["error", "always"],
2441
+ "vue/quote-props": ["error", "consistent-as-needed"],
2442
+ "vue/space-in-parens": ["error", "never"],
2443
+ "vue/template-curly-spacing": "error"
2444
+ } : {},
2289
2445
  // User overrides
2290
2446
  ...overrides
2291
2447
  }
@@ -2311,9 +2467,7 @@ async function vue(options = {}) {
2311
2467
  "vuejs-accessibility/label-has-for": "error",
2312
2468
  "vuejs-accessibility/no-autofocus": "warn",
2313
2469
  "vuejs-accessibility/no-redundant-roles": "error",
2314
- "vuejs-accessibility/tabindex-no-positive": "error",
2315
- // User overrides
2316
- ...overrides
2470
+ "vuejs-accessibility/tabindex-no-positive": "error"
2317
2471
  }
2318
2472
  });
2319
2473
  }
@@ -2378,37 +2532,56 @@ import ymlPlugin, { configs as ymlConfigs } from "eslint-plugin-yml";
2378
2532
  import yamlParser from "yaml-eslint-parser";
2379
2533
  var ymlStandardRules = ymlConfigs?.standard?.rules || {};
2380
2534
  function yaml(options = {}) {
2381
- const { overrides = {} } = options;
2535
+ const {
2536
+ overrides = {},
2537
+ stylistic: stylistic2 = true
2538
+ } = options;
2539
+ const {
2540
+ indent = 2,
2541
+ quotes = "single"
2542
+ } = typeof stylistic2 === "boolean" ? {} : stylistic2;
2382
2543
  return [
2383
2544
  {
2384
2545
  files: [GLOB_YAML],
2385
2546
  languageOptions: {
2386
2547
  parser: yamlParser
2387
2548
  },
2388
- name: "eslint-sets/yaml/setup",
2549
+ name: "eslint-sets/yaml",
2389
2550
  plugins: {
2390
2551
  yml: ymlPlugin
2391
2552
  },
2392
2553
  rules: {
2393
2554
  ...ymlStandardRules,
2394
- // YAML rules
2555
+ // YAML core rules (always enabled)
2395
2556
  "yml/block-mapping": "error",
2396
2557
  "yml/block-sequence": "error",
2397
2558
  "yml/file-extension": ["error", { extension: "yml" }],
2398
2559
  "yml/key-name-casing": "off",
2399
- "yml/key-spacing": "error",
2400
2560
  "yml/no-empty-document": "error",
2401
2561
  "yml/no-empty-key": "error",
2402
2562
  "yml/no-empty-mapping-value": "error",
2403
2563
  "yml/no-empty-sequence-entry": "error",
2404
2564
  "yml/no-irregular-whitespace": "error",
2405
- "yml/no-multiple-empty-lines": ["error", { max: 1, maxBOF: 0, maxEOF: 0 }],
2406
- "yml/no-tab-indent": "error",
2407
2565
  "yml/plain-scalar": "error",
2408
2566
  "yml/require-string-key": "error",
2409
2567
  "yml/sort-keys": "off",
2410
2568
  "yml/sort-sequence-values": "off",
2411
- "yml/spaced-comment": "error",
2569
+ // Stylistic rules (conditional)
2570
+ ...stylistic2 ? {
2571
+ // yml/indent only accepts integer values, not "tab"
2572
+ // When using tabs, disable indent rule and no-tab-indent
2573
+ ...indent === "tab" ? {
2574
+ "yml/indent": "off",
2575
+ "yml/no-tab-indent": "off"
2576
+ } : {
2577
+ "yml/indent": ["error", indent],
2578
+ "yml/no-tab-indent": "error"
2579
+ },
2580
+ "yml/key-spacing": "error",
2581
+ "yml/no-multiple-empty-lines": ["error", { max: 1, maxBOF: 0, maxEOF: 0 }],
2582
+ "yml/quotes": ["error", { avoidEscape: true, prefer: quotes }],
2583
+ "yml/spaced-comment": "error"
2584
+ } : {},
2412
2585
  // User overrides
2413
2586
  ...overrides
2414
2587
  }
@@ -2495,12 +2668,16 @@ async function config(options = {}) {
2495
2668
  if (isEnabled(tsOption) || isAutoDetect(tsOption) && autoDetect && hasTypeScript()) {
2496
2669
  const tsOpts = isOptionsObject(tsOption) ? { ...tsOption } : {};
2497
2670
  tsOpts.overrides = getOverrides(options, "typescript");
2671
+ tsOpts.type = _type;
2498
2672
  configs.push(...await typescript(tsOpts));
2499
2673
  }
2500
2674
  if (isEnabled(vueOption) || isAutoDetect(vueOption) && autoDetect && hasVue()) {
2501
2675
  const vueOpts = isOptionsObject(vueOption) ? { ...vueOption } : {};
2502
2676
  vueOpts.overrides = getOverrides(options, "vue");
2503
- configs.push(...await vue(vueOpts));
2677
+ const vueStylistic = stylisticOption === false ? false : {
2678
+ indent: typeof stylisticOption === "object" ? stylisticOption.indent : 2
2679
+ };
2680
+ configs.push(...await vue({ ...vueOpts, stylistic: vueStylistic }));
2504
2681
  }
2505
2682
  if (isEnabled(reactOption) || isAutoDetect(reactOption) && autoDetect && hasReact()) {
2506
2683
  const reactOpts = isOptionsObject(reactOption) ? { ...reactOption } : {};
@@ -2533,18 +2710,29 @@ async function config(options = {}) {
2533
2710
  }
2534
2711
  if (jsoncOption !== false) {
2535
2712
  const jsoncOpts = typeof jsoncOption === "object" ? jsoncOption : {};
2536
- configs.push(...jsonc(jsoncOpts));
2713
+ const jsoncStylistic = stylisticOption === false ? false : {
2714
+ indent: typeof stylisticOption === "object" ? stylisticOption.indent : 2
2715
+ };
2716
+ configs.push(...jsonc({ ...jsoncOpts, stylistic: jsoncStylistic }));
2537
2717
  }
2538
2718
  if (yamlOption !== false) {
2539
2719
  const yamlOpts = typeof yamlOption === "object" ? yamlOption : {};
2540
- configs.push(...yaml(yamlOpts));
2720
+ const yamlStylistic = stylisticOption === false ? false : {
2721
+ indent: typeof stylisticOption === "object" ? stylisticOption.indent : 2,
2722
+ quotes: typeof stylisticOption === "object" ? stylisticOption.quotes : "single"
2723
+ };
2724
+ configs.push(...yaml({ ...yamlOpts, stylistic: yamlStylistic }));
2541
2725
  }
2542
2726
  if (markdownOption !== false) {
2543
2727
  const markdownOpts = typeof markdownOption === "object" ? markdownOption : {};
2544
2728
  configs.push(...await markdown(markdownOpts));
2545
2729
  }
2546
2730
  if (tomlOption !== false) {
2547
- configs.push(...toml());
2731
+ const tomlOpts = typeof tomlOption === "object" ? tomlOption : {};
2732
+ const tomlStylistic = stylisticOption === false ? false : {
2733
+ indent: typeof stylisticOption === "object" ? stylisticOption.indent : 2
2734
+ };
2735
+ configs.push(...toml({ ...tomlOpts, stylistic: tomlStylistic }));
2548
2736
  }
2549
2737
  if (importsOption !== false) {
2550
2738
  const importsOpts = typeof importsOption === "object" ? importsOption : {};
package/dist/types.d.ts CHANGED
@@ -33,12 +33,97 @@ export type FrameworkOptions = boolean | 'auto' | OptionsOverrides;
33
33
  * Project type
34
34
  */
35
35
  export type ProjectType = 'app' | 'lib';
36
+ /**
37
+ * Project type options
38
+ */
39
+ export interface OptionsProjectType {
40
+ /**
41
+ * Type of the project. `lib` will enable more strict rules for libraries.
42
+ * @default 'app'
43
+ */
44
+ type?: ProjectType;
45
+ }
36
46
  /**
37
47
  * Override rules for a specific configuration
38
48
  */
39
49
  export interface OptionsOverrides {
40
50
  overrides?: TypedFlatConfigItem['rules'];
41
51
  }
52
+ /**
53
+ * Editor environment detection options
54
+ */
55
+ export interface OptionsIsInEditor {
56
+ /**
57
+ * Control to disable some rules in editors.
58
+ * @default auto-detect based on process.env
59
+ */
60
+ isInEditor?: boolean;
61
+ }
62
+ /**
63
+ * Base stylistic options shared across configs
64
+ */
65
+ export interface StylisticConfigBase {
66
+ /**
67
+ * Indentation style
68
+ * @default 2
69
+ */
70
+ indent?: number | 'tab';
71
+ /**
72
+ * Quote style
73
+ * @default 'single'
74
+ */
75
+ quotes?: 'single' | 'double';
76
+ }
77
+ /**
78
+ * Stylistic options for configs that support it
79
+ */
80
+ export interface OptionsStylistic {
81
+ stylistic?: boolean | StylisticConfigBase;
82
+ }
83
+ /**
84
+ * TypeScript type-aware options
85
+ */
86
+ export interface OptionsTypeScriptWithTypes {
87
+ /**
88
+ * When this options is provided, type aware rules will be enabled.
89
+ * @see https://typescript-eslint.io/linting/typed-linting/
90
+ */
91
+ tsconfigPath?: string;
92
+ /**
93
+ * Override type aware rules.
94
+ */
95
+ overridesTypeAware?: TypedFlatConfigItem['rules'];
96
+ }
97
+ /**
98
+ * TypeScript erasable syntax only options
99
+ */
100
+ export interface OptionsTypeScriptErasableOnly {
101
+ /**
102
+ * Enable erasable syntax only rules.
103
+ * Useful for libraries that want to ensure type-only constructs.
104
+ * @default false
105
+ */
106
+ erasableOnly?: boolean;
107
+ }
108
+ /**
109
+ * TypeScript parser options
110
+ */
111
+ export interface OptionsTypeScriptParserOptions {
112
+ /**
113
+ * Additional parser options for TypeScript.
114
+ */
115
+ parserOptions?: Record<string, unknown>;
116
+ /**
117
+ * Glob patterns for files that should be type aware.
118
+ * @default ['**\/*.{ts,tsx}']
119
+ */
120
+ filesTypeAware?: string[];
121
+ /**
122
+ * Glob patterns for files that should not be type aware.
123
+ * @default ['**\/*.md\/**', '**\/*.astro/*.ts']
124
+ */
125
+ ignoresTypeAware?: string[];
126
+ }
42
127
  /**
43
128
  * Perfectionist sorting options
44
129
  */
@@ -61,7 +146,7 @@ export interface PerfectionistOptions {
61
146
  /**
62
147
  * Main configuration options
63
148
  */
64
- export interface Options {
149
+ export interface Options extends OptionsIsInEditor {
65
150
  /**
66
151
  * Enable Angular support
67
152
  * Requires @angular-eslint/eslint-plugin
@@ -125,11 +210,6 @@ export interface Options {
125
210
  * @default true
126
211
  */
127
212
  imports?: boolean | OptionsOverrides;
128
- /**
129
- * Control to disable some rules in editors
130
- * @default auto-detect based on process.env
131
- */
132
- isInEditor?: boolean;
133
213
  /**
134
214
  * Enable JSON/YAML support
135
215
  * @default true
@@ -230,7 +310,7 @@ export interface Options {
230
310
  * Enable TOML support
231
311
  * @default true
232
312
  */
233
- toml?: boolean;
313
+ toml?: boolean | OptionsOverrides;
234
314
  /**
235
315
  * Project type
236
316
  * - 'app': Application project (default)
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@eslint-sets/eslint-config",
3
3
  "description": "Modern ESLint config with flat config support for Vue, React, Svelte, TypeScript, Next.js, Nuxt, Astro, Angular, UnoCSS and more",
4
- "version": "6.2.0-beta.4",
4
+ "version": "6.2.0-beta.6",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@9.0.6",
7
7
  "bin": {
@@ -108,6 +108,7 @@
108
108
  "@unocss/eslint-plugin": ">=0.60.0",
109
109
  "astro-eslint-parser": "^1.0.2",
110
110
  "eslint-plugin-astro": "^1.2.0",
111
+ "eslint-plugin-erasable-syntax-only": "^0.4.0",
111
112
  "eslint-plugin-format": "^0.1.3",
112
113
  "eslint-plugin-jsx-a11y": "^6.10.2",
113
114
  "eslint-plugin-pnpm": "^1.1.0",