@xylabs/eslint-config-flat 8.1.21 → 8.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +30 -2
  2. package/dist/neutral/core/index.d.ts +2 -0
  3. package/dist/neutral/core/index.d.ts.map +1 -1
  4. package/dist/neutral/import/index.d.ts.map +1 -1
  5. package/dist/neutral/index.d.ts +9 -8
  6. package/dist/neutral/index.d.ts.map +1 -1
  7. package/dist/neutral/index.mjs +719 -191
  8. package/dist/neutral/index.mjs.map +4 -4
  9. package/dist/neutral/rules/consistency.d.ts +3 -0
  10. package/dist/neutral/rules/consistency.d.ts.map +1 -0
  11. package/dist/neutral/rules/correctness.d.ts +3 -0
  12. package/dist/neutral/rules/correctness.d.ts.map +1 -0
  13. package/dist/neutral/rules/index.d.ts +2 -0
  14. package/dist/neutral/rules/index.d.ts.map +1 -1
  15. package/dist/neutral/sonar/index.d.ts.map +1 -1
  16. package/dist/neutral/tiers/conflicts.d.ts +20 -0
  17. package/dist/neutral/tiers/conflicts.d.ts.map +1 -0
  18. package/dist/neutral/tiers/index.d.ts +35 -0
  19. package/dist/neutral/tiers/index.d.ts.map +1 -0
  20. package/dist/neutral/tiers/opinionated.d.ts +5 -0
  21. package/dist/neutral/tiers/opinionated.d.ts.map +1 -0
  22. package/dist/neutral/tiers/plugin-rules.d.ts +8 -0
  23. package/dist/neutral/tiers/plugin-rules.d.ts.map +1 -0
  24. package/dist/neutral/typescript/index.d.ts +5 -0
  25. package/dist/neutral/typescript/index.d.ts.map +1 -1
  26. package/dist/neutral/unicorn/index.d.ts +3 -0
  27. package/dist/neutral/unicorn/index.d.ts.map +1 -1
  28. package/dist/neutral/workspaces/index.d.ts.map +1 -1
  29. package/dist/node/core/index.d.ts +2 -0
  30. package/dist/node/core/index.d.ts.map +1 -1
  31. package/dist/node/import/index.d.ts.map +1 -1
  32. package/dist/node/index.d.ts +9 -8
  33. package/dist/node/index.d.ts.map +1 -1
  34. package/dist/node/index.mjs +719 -191
  35. package/dist/node/index.mjs.map +4 -4
  36. package/dist/node/rules/consistency.d.ts +3 -0
  37. package/dist/node/rules/consistency.d.ts.map +1 -0
  38. package/dist/node/rules/correctness.d.ts +3 -0
  39. package/dist/node/rules/correctness.d.ts.map +1 -0
  40. package/dist/node/rules/index.d.ts +2 -0
  41. package/dist/node/rules/index.d.ts.map +1 -1
  42. package/dist/node/sonar/index.d.ts.map +1 -1
  43. package/dist/node/tiers/conflicts.d.ts +20 -0
  44. package/dist/node/tiers/conflicts.d.ts.map +1 -0
  45. package/dist/node/tiers/index.d.ts +35 -0
  46. package/dist/node/tiers/index.d.ts.map +1 -0
  47. package/dist/node/tiers/opinionated.d.ts +5 -0
  48. package/dist/node/tiers/opinionated.d.ts.map +1 -0
  49. package/dist/node/tiers/plugin-rules.d.ts +8 -0
  50. package/dist/node/tiers/plugin-rules.d.ts.map +1 -0
  51. package/dist/node/typescript/index.d.ts +5 -0
  52. package/dist/node/typescript/index.d.ts.map +1 -1
  53. package/dist/node/unicorn/index.d.ts +3 -0
  54. package/dist/node/unicorn/index.d.ts.map +1 -1
  55. package/dist/node/workspaces/index.d.ts.map +1 -1
  56. package/package.json +6 -4
package/README.md CHANGED
@@ -49,6 +49,28 @@ const eslintConfig: Linter.Config[] = [
49
49
  export default eslintConfig
50
50
  ```
51
51
 
52
+ ### Tiered presets
53
+
54
+ Each tier is a **superset** of the previous tier. Pick the strictness level that fits your project.
55
+
56
+ | Export | Tier | Description |
57
+ |--------|------|-------------|
58
+ | `correctnessConfig` | 0 | Type safety, bug prevention, import restrictions |
59
+ | `consistencyConfig` | 1 | Tier 0 + formatting, member ordering, complexity limits |
60
+ | `bestPracticesConfig` | 2 | Tier 1 + unicorn and import validation (**default**) |
61
+ | `opinionatedConfig` | 3 | Tier 2 + optional stricter rules (mostly warnings) |
62
+ | `strictConfig` | 4 | Tier 3 + SonarJS and warnings promoted to errors |
63
+
64
+ Type-checked variants append `TypeChecked` (for example `bestPracticesTypeCheckedConfig`).
65
+
66
+ ```ts
67
+ import { strictTypeCheckedConfig } from '@xylabs/eslint-config-flat'
68
+
69
+ export default [...strictTypeCheckedConfig]
70
+ ```
71
+
72
+ `config` and `recommendedTypeCheckedConfig` are compatibility aliases for `bestPracticesTypeCheckedConfig`.
73
+
52
74
  ### Extending with custom rules
53
75
 
54
76
  ```ts
@@ -85,7 +107,7 @@ import {
85
107
 
86
108
  - TypeScript strict linting via `@typescript-eslint`
87
109
  - Import sorting and validation via `eslint-plugin-import-x`
88
- - Code quality checks via `eslint-plugin-sonarjs`
110
+ - Code quality checks via `eslint-plugin-sonarjs` (strict tier)
89
111
  - Best practices via `eslint-plugin-unicorn`
90
112
  - Monorepo workspace rules via `eslint-plugin-workspaces`
91
113
  - Markdown linting via `eslint-plugin-markdown`
@@ -93,6 +115,12 @@ import {
93
115
 
94
116
  For React projects, use [`@xylabs/eslint-config-react-flat`](https://www.npmjs.com/package/@xylabs/eslint-config-react-flat) instead.
95
117
 
118
+ ## Rule ownership
119
+
120
+ Some plugins cover similar territory. This config assigns a single canonical owner per concern and disables overlapping rules. See `RULE_OWNERSHIP_GROUPS` and `assertNoRuleOwnershipConflicts` exported from this package.
121
+
122
+ When upgrading ESLint plugins, run tests in this package — `spec/plugin-rules.spec.ts` snapshots each plugin's rule list and fails when new rules appear.
123
+
96
124
 
97
125
  ## License
98
126
 
@@ -106,4 +134,4 @@ See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-onl
106
134
  [npm-link]: https://www.npmjs.com/package/@xylabs/eslint-config-flat
107
135
  [license-badge]: https://img.shields.io/npm/l/@xylabs/eslint-config-flat.svg
108
136
  [license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
109
- [logo]: https://cdn.xy.company/img/brand/XYPersistentCompany_Logo_Icon_Colored.svg
137
+ [logo]: https://cdn.xy.company/img/brand/XYPersistentCompany_Logo_Icon_Colored.svg
@@ -1,3 +1,5 @@
1
1
  import type { Linter } from 'eslint';
2
+ export declare const correctnessCoreConfig: Linter.Config[];
3
+ export declare const bestPracticesCoreConfig: Linter.Config[];
2
4
  export declare const coreConfig: Linter.Config[];
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AASpC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAMrC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAapC,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAKhD,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAElD,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAIrC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/import/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAa5C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EA+BvC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/import/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAa5C,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAiCvC,CAAA"}
@@ -1,16 +1,17 @@
1
1
  import type { Linter } from 'eslint';
2
- export declare const recommendedConfig: Linter.Config[];
3
- export declare const recommendedTypeCheckedConfig: Linter.Config[];
4
2
  export declare const docsConfig: Linter.Config[];
5
- export declare const config: Linter.Config[];
6
- export { coreConfig } from './core/index.ts';
7
- export * from './ignores.ts';
3
+ export { bestPracticesCoreConfig, coreConfig, correctnessCoreConfig, } from './core/index.ts';
4
+ export { ignores } from './ignores.ts';
8
5
  export { importConfig } from './import/index.ts';
9
6
  export { json5Config, jsoncConfig, jsonConfig, } from './json/index.ts';
10
7
  export { markdownConfig } from './markdown/index.ts';
11
- export { rulesConfig, srcImportsConfig } from './rules/index.ts';
8
+ export { consistencyRulesConfig, correctnessRulesConfig, rulesConfig, srcImportsConfig, } from './rules/index.ts';
12
9
  export { sonarConfig } from './sonar/index.ts';
13
- export { typescriptConfig, typescriptTypeCheckedConfig } from './typescript/index.ts';
14
- export { unicornConfig } from './unicorn/index.ts';
10
+ export { assertNoRuleOwnershipConflicts, findRuleOwnershipConflicts, mergeConfigRules, RULE_OWNERSHIP_GROUPS, } from './tiers/conflicts.ts';
11
+ export { bestPracticesConfig, bestPracticesTypeCheckedConfig, config, consistencyConfig, consistencyTypeCheckedConfig, correctnessConfig, correctnessTypeCheckedConfig, opinionatedConfig, opinionatedTypeCheckedConfig, recommendedConfig, recommendedTypeCheckedConfig, strictConfig, strictTypeCheckedConfig, } from './tiers/index.ts';
12
+ export { opinionatedLayerConfig, strictLayerConfig, strictPromotionRules, } from './tiers/opinionated.ts';
13
+ export { collectPluginRuleSnapshots, serializePluginRuleSnapshots, } from './tiers/plugin-rules.ts';
14
+ export { typescriptConfig, typescriptConsistencyConfig, typescriptCorrectnessConfig, typescriptDelegationConfig, typescriptTypeCheckedConfig, typescriptTypeCheckedConsistencyConfig, typescriptTypeCheckedCorrectnessConfig, } from './typescript/index.ts';
15
+ export { unicornConfig, unicornV66MigrationQueue, unicornV66NewRules, } from './unicorn/index.ts';
15
16
  export { workspacesConfig } from './workspaces/index.ts';
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -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;AAWpC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAK5C,CAAA;AAED,eAAO,MAAM,4BAA4B,EAAE,MAAM,CAAC,MAAM,EAKvD,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAKrC,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAiC,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,WAAW,EAAE,WAAW,EAAE,UAAU,GACrC,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAA;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAQpC,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAKrC,CAAA;AAED,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EACL,WAAW,EAAE,WAAW,EACxB,UAAU,GACX,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,mBAAmB,EACnB,8BAA8B,EAC9B,MAAM,EACN,iBAAiB,EACjB,4BAA4B,EAC5B,iBAAiB,EACjB,4BAA4B,EAC5B,iBAAiB,EACjB,4BAA4B,EAE5B,iBAAiB,EAEjB,4BAA4B,EAC5B,YAAY,EACZ,uBAAuB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,sCAAsC,EACtC,sCAAsC,GACvC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}