@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 +57 -11
- package/dist/configs/index.d.ts +2 -0
- package/dist/configs/index.d.ts.map +1 -1
- package/dist/configs/jsonc.d.ts +2 -2
- package/dist/configs/jsonc.d.ts.map +1 -1
- package/dist/configs/prettier.d.ts +2 -2
- package/dist/configs/stylistic.d.ts +2 -2
- package/dist/configs/stylistic.d.ts.map +1 -1
- package/dist/configs/toml.d.ts +22 -1
- package/dist/configs/toml.d.ts.map +1 -1
- package/dist/configs/typescript.d.ts +2 -16
- package/dist/configs/typescript.d.ts.map +1 -1
- package/dist/configs/vue.d.ts +2 -2
- package/dist/configs/vue.d.ts.map +1 -1
- package/dist/configs/yaml.d.ts +22 -1
- package/dist/configs/yaml.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +236 -48
- package/dist/types.d.ts +87 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -234,13 +234,15 @@ export default eslintConfig({
|
|
|
234
234
|
|
|
235
235
|
// Or with custom options:
|
|
236
236
|
stylistic: {
|
|
237
|
-
arrowParens:
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
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:
|
|
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' | '
|
|
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:
|
|
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:
|
|
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
|
package/dist/configs/index.d.ts
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,OAAO,EAA0C,MAAM,UAAU,CAAA;AA0B/E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAC3B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAwC7B;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,OAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/configs/index.ts"],"names":[],"mappings":"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"}
|
package/dist/configs/jsonc.d.ts
CHANGED
|
@@ -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;
|
|
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 '
|
|
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
|
|
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
|
|
8
|
+
* @default false
|
|
9
9
|
*/
|
|
10
10
|
arrowParens?: boolean;
|
|
11
11
|
/**
|
|
12
12
|
* Brace style
|
|
13
|
-
* @default '
|
|
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,
|
|
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"}
|
package/dist/configs/toml.d.ts
CHANGED
|
@@ -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;
|
|
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,
|
|
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"}
|
package/dist/configs/vue.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/configs/yaml.d.ts
CHANGED
|
@@ -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
|
|
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,
|
|
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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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 {
|
|
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
|
|
952
|
+
name: "eslint-sets/jsonc",
|
|
947
953
|
plugins: {
|
|
948
954
|
jsonc: jsoncPlugin
|
|
949
955
|
},
|
|
950
956
|
rules: {
|
|
951
|
-
//
|
|
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 = "
|
|
1367
|
+
arrowParens = "avoid",
|
|
1348
1368
|
bracketSpacing = true,
|
|
1349
1369
|
endOfLine = "auto",
|
|
1350
1370
|
jsxSingleQuote = false,
|
|
1351
1371
|
overrides = {},
|
|
1352
|
-
printWidth =
|
|
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:
|
|
1736
|
-
braceStyle: "
|
|
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
|
|
2017
|
-
"toml/comma-style":
|
|
2018
|
-
"toml/
|
|
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": "
|
|
2023
|
-
"toml/
|
|
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
|
-
|
|
2037
|
-
|
|
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
|
-
|
|
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-
|
|
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", {
|
|
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
|
-
|
|
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/
|
|
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:
|
|
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 {
|
|
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/
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEzD,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA;AAExC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,WAAW,CAAA;AAEnF;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG;IAC5E;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAE7B;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACb,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAElE;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,CAAA;AAEvC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,SAAS,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAA;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACpC;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAEtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;IAE9B;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,cAAc,CAAA;CACjD;AAED;;GAEG;AACH,MAAM,WAAW,
|
|
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
|
+
"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",
|